【发布时间】:2020-03-24 04:54:53
【问题描述】:
我收到错误 500(对重载属性 App\Example::$exampleName 的间接修改无效) 关于我的更新方法,我不知道为什么。
public function update(Request $request, Example $example)
{
$data = $request->validate([
'account_name' => 'required|string',
'name'=> 'nullable|string',
'name_type' =>'nullable|integer',
]);
$example->account_name = $data['account_name'];
$example->exampleName->name = $data['name'];
$example->exampleName->name_type = $data['name_type'];
$example->push();
return response($example,200);
}
【问题讨论】:
-
我尝试了类似的东西,比如在你的网址中,但我得到了同样的错误。
-
你在下面的cmets中已经说过了,但是如果
$example->exampleName是null,你就不能在上面设置->name。当$example->exampleName不存在时,您需要在尝试设置属性之前对其进行初始化,并且在尝试访问/修改代码之前,您永远不应假设代码中存在某些内容。围绕修改的简单if($example->exampleName){ ... }应该可以工作。 -
你说得对。但如果不存在,我想创建它。我在 stackoverflow.com/questions/47713760/… 上找到了一些东西,我为 $example->exampleName 编写了 updateOrCreate,还没有,但我认为我已经接近了。
-
再一次,如果
$example->exampleName是null,您将无法调用它的方法(例如updateOrCreate())。我将在下面发布一个方法。
标签: laravel eloquent laravel-6