我使用的是Laravel 5.2,当我插入模型时,主键id列以某种方式重置为0.下面发生了什么。
$fooModel = new FooModel();
$fooModel->foo_id = 123;
$fooModel->foo_title = 'foo';
echo($fooModel->foo_id); //123
$fooModel->save();
echo($fooModel->foo_id); //0
数据已成功插入MySQL数据库,但foo_id列在PHP中重置为0。如果它是一个自动增量列,我知道它会被下一个序列值更新,但是这个列不是。我有什么遗失的吗?
class FooModel extends Model
{
protected $table = 'foo_table';
protected $primaryKey = 'foo_id';
protected $guarded = ['foo_id'];
protected $casts = [
'foo_id' => 'integer'
];
}
答案 0 :(得分:2)
问题解决了。我需要声明" public $ incrementing = false;"在我的Model类中。
class FooModel extends Model
{
protected $table = 'foo_table';
protected $primaryKey = 'foo_id';
public $incrementing = false;
protected $guarded = ['foo_id'];
protected $casts = [
'foo_id' => 'integer'
];
}
$ incrementing的默认设置为true。这就是为什么laravel将id列设置为0的原因。
abstract class Model {
/**
* Indicates if the IDs are auto-incrementing.
*
* @var bool
*/
public $incrementing = true;
}
答案 1 :(得分:0)
试试这个
$fooModel = $fooModel->save();
echo($fooModel->foo_id);
或
$fooModel = $fooModel->save();
echo($fooModel->id);