模型后的模型结构 - >找到($ 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;
}
答案 0 :(得分:2)
以下代码应该有效。
$reflection = new \ReflectionClass($case);
foreach($input as $key => $value){
var_dump($key);
$reflection->{$key} = $value;
}
$case->save();
答案 1 :(得分:1)
看起来你的语法有点偏,试试这个:
foreach($input as $key => $value){
$case->{$key} = $value;
}
$case->save();
答案 2 :(得分:1)
您的问题是您尝试以PHP不支持的方式访问对象的属性。
要使用包含其名称的变量访问对象的属性,您需要使用字符串插值。 Wikipedia - String Interpolation 您可以使用花括号{} 代替圆括号()
来实现此目的您可以像这样修复您的示例:
foreach($input as $key => $value){
$case->{$key}= $value;
}
$case->save();
顺便说一句,在PHP中,这几乎可以像你的第二个例子那样实现,但没有双引号
foreach($input as $key => $value){
$case->$key= $value;
}
$case->save();
我个人更喜欢使用花括号,因为它更清楚地表明我正在使用变量的字符串值。
答案 3 :(得分:1)
如果这是一个laravel eloquent模型,您可以使用fill
方法。
$case->fill($input);
$case->save();