2016-10-18 85 views
-2

讓說,我有表結構表如下:使用Laravel 5.3時,主鍵列的名稱始終爲id?

Table_A 
    sid (auto increment, primary) 
    .... some other column .... 
    created_at (created using laravel eloquent timestamps() function) 
    updated_at (same as above) 

然後,我通過創建一個新列。

$new_row = new TableA; //TableA is a model created pointing to Table_A 
$new_row->col1 = 'Some value'; 
$new_row->col2 = 'Some other value'; 
// Some other field 
$new_row->save() 

然後,這部分代碼之後,

dd($new_row->sid); 

令人驚訝地,輸出爲:

null 

然而,當我將其更改爲:

dd($new_row->id); 

它返回sid(即主鍵v該行的線索)。當我在Laravel Model中使用自動增量作爲主鍵時,主鍵的名稱是否始終爲id?或者爲什麼我只有在使用名稱id才能獲得價值?


P.S.讓我說清楚:我知道如何獲得主鍵值,並且我知道我可以在模型中設置主鍵的名稱。我想知道的是,如果這種行爲適用於所有主鍵,或者僅適用於主鍵。

回答

4

在你的模型定義主key.This將覆蓋默認的主鍵ID

protected $primaryKey = 'sid'; 
+0

即使我居然沒有名爲id列? – cytsunny

+0

laravel使用默認ID作爲主鍵 – iCoders

+0

我不是要求在這個答案的解決方案。我說我知道我可以使用$ new_row-> id來獲得我想要的。我問爲什麼它始終是id,即使我根本沒有名爲「id」的列。如果我沒有使用不是自動增量的主鍵,它仍然是ID嗎? – cytsunny