调用save()后,Laravel Eloquent重置主键值
我使用的是Laravel5.2,当我插入模型时,主键id列以某种方式重置为0。下面是正在发生的事情调用save()后,Laravel Eloquent重置主键值,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,我使用的是Laravel5.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数据库,但在PHP中
$fooModel = new FooModel();
$fooModel->foo_id = 123;
$fooModel->foo_title = 'foo';
echo($fooModel->foo_id); //123
$fooModel->save();
echo($fooModel->foo_id); //0
数据已成功插入MySQL数据库,但在PHP中foo_id列重置为0。如果它是一个自动增量列,我知道它将被下一个序列值更新,但此列不是。我有什么遗漏吗
class FooModel extends Model
{
protected $table = 'foo_table';
protected $primaryKey = 'foo_id';
protected $guarded = ['foo_id'];
protected $casts = [
'foo_id' => 'integer'
];
}
试试这个
$fooModel = $fooModel->save();
echo($fooModel->foo_id);
或
试试这个
$fooModel = $fooModel->save();
echo($fooModel->foo_id);
或
问题解决了。我需要在我的模型类中声明“public$incrementing=false;”
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;
}
问题解决了。我需要在我的模型类中声明“public$incrementing=false;”
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;
}
对不起,我编辑了我的问题。这是关于插入而不是更新。当我调用save()进行更新时,foo_id列值在那里,但当我调用save()进行插入时,foo_id列值重置为0。我尝试了您的代码,但出现了错误“尝试获取非对象的属性”。请尝试输出的内容
$fooModel=$fooModel->save();回声模型代码>我猜在保存nee之后,将获得echo($fooModel->id)代码>调用save()时,将返回布尔值,以告知数据是否已成功插入/更新。echo($fooModel->id);也输出0。对不起,我编辑了我的问题。这是关于插入而不是更新。当我调用save()进行更新时,foo_id列值在那里,但当我调用save()进行插入时,foo_id列值重置为0。我尝试了您的代码,但出现了错误“尝试获取非对象的属性”。请尝试输出的内容$fooModel=$fooModel->save();回声模型代码>我猜在保存nee之后,将获得echo($fooModel->id)代码>调用save()时,将返回布尔值,以告知数据是否已成功插入/更新。echo($fooModel->id);也输出0。您是否得到其他字段,如updated\u at
有值或相同的重置问题,或者它仅用于主键字段?您是否得到其他字段,如updated\u at
有值或相同的重置问题,或者它仅用于主键字段?天哪,您救了我,使我免于追捕兔子洞,你把我从兔子洞里救了出来