toJson()的逆转 - 将JSON反序列化为模型

时间:2016-11-29 10:17:00

标签: json laravel eloquent

我加载具有关系的模型(如书籍,作者,出版商,关键字)并将其发送到JSON中的Web界面。用户将在那里编辑它,然后界面将其作为JSON发回。问题是如何从JSON创建模型(与toJson()调用相反),然后将其保存到数据库中。如果我可以将原始数据(再次从数据库重新加载)与我从网络层接收的数据进行比较,也会有所帮助。

2 个答案:

答案 0 :(得分:1)

一旦服务器收到JSON,您就可以对其进行解码:

$decoded = json_decode( Input::get('json') );

如果你想比较模型,一个选项是从解码的JSON中获取模型的ID(确保你仔细检查用户是否有权访问它,以防他们尝试捏造你的数据),循环你的密钥/解码数据的值,并将它们相互匹配。

$model = YourModel::find( $decoded->id ); // dont forget to ensure they have access to this model

// Set up an empty array to store anything that's changed
$changes = array();

// Loop over your decoded values
foreach( $decoded as $key => $value ) {

    // If the value in your model doesn't match the decoded value, add to the changes array
    if( $model->{$key} != $value ) {
        $changes[$key] = $value;
    }
}

答案 1 :(得分:-1)

您可以使用collection将其转换为collect(json_decode($json))

collection Docs