2016-10-18 34 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