Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Laravel 5.3时,主键列的名称始终是id?_Php_Laravel_Laravel 5_Model_Laravel 5.3 - Fatal编程技术网

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

Php 使用Laravel 5.3时,主键列的名称始终是id?,php,laravel,laravel-5,model,laravel-5.3,Php,Laravel,Laravel 5,Model,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) 然后,我创建了一个新的列 $new_row = new TableA; //TableA is a model cre

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

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(即行的主键值)。当我在Laravel模型中将自动递增用作主键时,主键的名称是否始终为id?或者为什么我只在使用名称
id
时才获取值



另外,让我澄清一下:我知道如何获取主键值,并且我知道可以在模型中设置主键的名称。我想知道的是,这种行为是否适用于所有主键,还是仅适用于那些具有主键的主键

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

protected $primaryKey = 'sid';

即使我实际上没有名为id的列?laravel使用take default id作为主键,我也不会在这个答案中要求解决方案。我说我知道我可以用$new_row->id来得到我想要的东西。我在问为什么它总是id,即使我根本没有名为“id”的列。如果我没有使用非自动递增的东西作为主键,它仍然是id吗?