Php Laravel 5雄辩的模型赢得';不要让我更新
我确实在数据库中设置了邀请表。我将其用于其他目的,例如添加更多 我的目标:使用新值将第一条记录更新到字段: 我试过:Php Laravel 5雄辩的模型赢得';不要让我更新,php,laravel,Php,Laravel,我确实在数据库中设置了邀请表。我将其用于其他目的,例如添加更多 我的目标:使用新值将第一条记录更新到字段: 我试过: $invitation = new MemberInvitation(); $invitation1 = $invitation->find(1); $invitation1->status = 'clicked'; $invitation1->save(); 而且: $invitation1 = \App\Model\MemberInvitation::fi
$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));
我错过了什么?试试这个
$invitation = MemberInvitation::findOrFail(1);
$invitation->status = 'clicked';
$invitation->save();
如果这不起作用,请显示您的模型查找(1)
不是指“给我第一条记录”,而是指“给我id=1的第一条记录”。如果没有id为1的记录,find(1)
将返回null
。当您尝试在null
上设置属性时,会收到一条PHP警告消息“从空值创建默认对象”
如果您真的只想获取第一条记录,可以使用first()
方法:
$invitation = \App\Model\MemberInvitation::first();
如果需要获取具有特定id的记录,可以使用find()
方法。例如,要将正在工作的DB代码转换为雄辩的代码,它将如下所示:
$invitation = \App\Model\MemberInvitation::find($member_invitation->id);
$invitation->status = 'clicked';
$invitation->member_id = $member->id;
$invitation->save();
根据你5月15日的答复,答案是显而易见的
模型中的“可填充”属性为空。确保在该数组中输入“status”。不在此数组中的属性不能向上修改。是否确实有第一条记录?通常情况下,如果
find(1)
没有返回记录,您会得到这个结果。尝试findOrFail
而不是find
并查看它是否引发异常。这起作用:\DB::table('member\u investments')->where('id','=',$member\u investment->id)->update(数组('status'=>'clicked','member\u id'=>$member->id));因此,我猜数据库是在战术记录软删除(即,deleted\u在
non-NULL)?我得到“ModelNotFoundException in Builder.php第125行:没有模型[App\model\MemberInvitation]的查询结果。”--如果\DB::table方法有效,这怎么可能呢?模型类很简单,而且非常空:类MemberInvitation扩展了模型{protected$filleble=[];/***模型使用的数据库表。**@var string*/protected$table='member_invitations';}我怀疑您的行是软删除的,因为在列的deleted\u中有一个非空值。