Laravel 5.2模型“发现意外数据”

时间:2016-08-24 10:25:26

标签: php laravel eloquent

在我的项目中,我有一个数组和模型中的对象,这两个应该进行比较。

模型具有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]))

但它没有帮助。

我也尝试用直接连接到数据库替换模型,但它也没有用。

我做错了什么?最奇怪的部分是我在另一个控制器中有完全相同的代码,它在那里工作正常。

0 个答案:

没有答案