Laravel 5雄辩的模型不会让我更新

时间:2015-05-14 21:29:19

标签: php laravel

我确实在数据库中设置了邀请表。我将它用于其他目的,例如添加更多......

我的目标:使用新值更新第一条记录到字段:

我试过了:

$invitation = new MemberInvitation();
$invitation1 = $invitation->find(1);
$invitation1->status = 'clicked';
$invitation1->save();

还有:

$invitation1 = \App\Model\MemberInvitation::find(1);
$invitation1->status = 'clicked';
$invitation1->save();

都以:

结束
Creating default object from empty value

编辑:

这段代码正确地处理和更新了我的记录 - 我不能通过Eloquent的模型来做到这一点:

\DB::table('member_invitations')->where('id', '=', $member_invitation->id)
                    ->update(array('status' => 'clicked', 'member_id' => $member->id));

我错过了什么?

3 个答案:

答案 0 :(得分:2)

试试这个。

$invitation = MemberInvitation::findOrFail(1);
$invitation->status = 'clicked';
$invitation->save();

如果不起作用,请显示您的型号

答案 1 :(得分:1)

find(1)并不意味着“给我第一条记录”,它意味着“给我第一条记录,其中id = 1”。如果您没有ID为1的记录,find(1)将返回null。当您尝试在null上设置属性时,会收到一条PHP警告消息“从空值创建默认对象”。

如果您真的只想获得第一条记录,可以使用first()方法:

$invitation = \App\Model\MemberInvitation::first();

如果您需要获取具有特定ID的记录,则可以使用find()方法。例如,要将工作的DB代码转换为Eloquent,它看起来像:

$invitation = \App\Model\MemberInvitation::find($member_invitation->id);
$invitation->status = 'clicked';
$invitation->member_id = $member->id;
$invitation->save();

答案 2 :(得分:0)

根据您5月15日以来的回复,答案很明显。

您在模型中的“可填充”属性为空。确保将“状态”放入该数组中。不在此数组中的属性无法进行修改。