在我的项目中,我有一个数组和模型中的对象,这两个应该进行比较。
模型具有id,name和surname,并且数组中包含相同的字段。所以,当我做的时候
$user = User::find($data['id']);
所以,如果我打电话
return array($user->id, $user->name, $user->surname);
我会得到
[0] => 1
[1] => 'John'
[2] => 'Doe'
这部分工作正常。
同时,$ data数组正在传递序列化形式,所以
return $data;
将打印出来,例如
['id'] => ['1']
['name'] => ['John']
['surname'] => ['Smith']
这部分也没关系。
以下是问题开始的地方。
我有一段代码如下:
$fields = ['name', 'surname'];
foreach($fields as $field) {
if($user->{$field} != $data[$field])
$user->update([$field => $data[$field]]);
}
在比较这两者时,我收到错误“发现意外数据”。
我已经尝试返回所有这些字段和类型,它们都是现有的字符串。此外,如果我用静态字符串替换if
语句的任何部分,它将起作用。我还试过额外的转换为字符串,比如
if(gettext($user->{$field}) != gettext($data[$field]))
但它没有帮助。
我也尝试用直接连接到数据库替换模型,但它也没有用。
我做错了什么?最奇怪的部分是我在另一个控制器中有完全相同的代码,它在那里工作正常。