调用save()后,Laravel Eloquent重置主键值

调用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中

我使用的是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中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
有值或相同的重置问题,或者它仅用于主键字段?天哪,您救了我,使我免于追捕兔子洞,你把我从兔子洞里救了出来