热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php–Laravel雄辩:更新模型及其关系

使用雄辩的模型,您只需通过调用即可更新数据$model-update($data);但不幸的是,这并没有更新关系.如果您还想更新关系,则需要手动分配每个值并调用push()然后:

使用雄辩的模型,您只需通过调用即可更新数据

$model->update( $data );

但不幸的是,这并没有更新关系.

如果您还想更新关系,则需要手动分配每个值并调用push()然后:

$model->name = $data['name'];
$model->relationship->description = $data['relationship']['description'];
$model->push();

通过这项工作,如果您要分配大量数据,它将变得一团糟.

我喜欢这样的事情

$model->push( $data ); // this should assign the data to the model like update() does but also for the relations of $model

有人可以帮帮我吗?

解决方法:

您可以实现observer pattern以捕获“更新”雄辩的事件.

首先,创建一个观察者类:

class RelationshipUpdateObserver {
public function updating($model) {
$data = $model->getAttributes();
$model->relationship->fill($data['relationship']);
$model->push();
}
}

然后将其分配给您的模型

class Client extends Eloquent {
public static function boot() {
parent::boot();
parent::observe(new RelationshipUpdateObserver());
}
}

当您调用update方法时,将触发“更新”事件,因此将触发观察者.

$client->update(array(
"relationship" => array("foo" => "bar"),
"username" => "baz"
));

有关完整的活动列表,请参阅laravel documentation.


推荐阅读
author-avatar
锋仔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有