[英]Laravel eloquent change attribute by field name
模型后的我的模型结构-> find($ id);
protected 'attributes' =>
array (size=35)
'id' => string '1234134' (length=6)
'case' => string '123123' (length=7)
我想像这样更新这个模型
foreach($input as $key => $value){
var_dump($key);
$case->($key)= $value;
}
$case -> save();
我这样尝试过,但不起作用
$reflection = new \ReflectionClass($case);
foreach($input as $key => $value){
var_dump($key);
$reflection->"$ke"y;
}
下面的代码应该工作。
$reflection = new \ReflectionClass($case);
foreach($input as $key => $value){
var_dump($key);
$reflection->{$key} = $value;
}
$case->save();
看来您的语法有点不对劲,请尝试以下操作:
foreach($input as $key => $value){
$case->{$key} = $value;
}
$case->save();
您的问题是您试图以PHP不支持的方式访问对象的属性。
要通过使用包含对象名称的变量来访问对象的属性,您需要使用字符串插值。 Wikipedia-字符串插值可以通过使用大括号{}而不是大括号()来实现
您可以这样修改示例:
foreach($input as $key => $value){
$case->{$key}= $value;
}
$case->save();
顺便说一下,在PHP中可以像在第二个示例中一样实现,但是没有双引号
foreach($input as $key => $value){
$case->$key= $value;
}
$case->save();
我个人更喜欢使用大括号,因为它更清楚地表明我正在使用变量的字符串值。
如果这是laravel雄辩的模型,则可以利用fill
方法的使用。
$case->fill($input);
$case->save();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.