【发布时间】:2017-04-13 07:02:53
【问题描述】:
我加载具有关系的模型(如书籍、作者、出版商、关键字),然后以 JSON 格式将其发送到 Web 界面。用户将在那里对其进行编辑,然后界面会将其作为 JSON 发送回。问题是如何从 JSON(与 toJson() 调用相反)创建模型,然后将其保存到数据库中。如果我可以将原始数据(再次从数据库重新加载)与我从 Web 层收到的数据进行比较,那也会很有帮助。
【问题讨论】:
我加载具有关系的模型(如书籍、作者、出版商、关键字),然后以 JSON 格式将其发送到 Web 界面。用户将在那里对其进行编辑,然后界面会将其作为 JSON 发送回。问题是如何从 JSON(与 toJson() 调用相反)创建模型,然后将其保存到数据库中。如果我可以将原始数据(再次从数据库重新加载)与我从 Web 层收到的数据进行比较,那也会很有帮助。
【问题讨论】:
您可以在服务器接收到 JSON 后对其进行解码:
$decoded = json_decode( Input::get('json') );
如果您想比较模型,一个选项是从解码的 JSON 中获取模型的 ID(确保您仔细检查用户是否可以访问它,以防他们试图在您身上捏造数据),循环访问您的密钥解码数据的 /values 并将它们相互匹配。
$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;
}
}
【讨论】:
您可以使用collect(json_decode($json)) 将其转换为collection。
【讨论】: