使用Laravel 5.3时,主键列的名称始终为id?

cyt*_*nny -2 php model laravel laravel-5 laravel-5.3

假设我有一个表结构表如下:

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

然后,我创建了一个新列.

$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()
Run Code Online (Sandbox Code Playgroud)

然后,在这部分代码之后,

dd($new_row->sid);
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,输出是:

null
Run Code Online (Sandbox Code Playgroud)

但是,当我将其更改为:

dd($new_row->id);
Run Code Online (Sandbox Code Playgroud)

它返回sid(即行的主键值).当我在Laravel模型中使用自动增量作为主键时,主键的名称是否始终为id?或者为什么我在使用名称时只获得了价值id


PS让我自己说清楚:我知道如何获得主键值,我知道我可以在模型中设置主键的名称.我想知道的是,这种行为是否适用于所有主键,或仅适用于具有主键的主键.

iCo*_*ers 5

在您的模型中定义主键.这将覆盖默认主键ID

protected $primaryKey = 'sid';
Run Code Online (Sandbox Code Playgroud)