如何在laravel中使用查询生成器使用模型事件
我在我的模型的静态函数启动方法中使用了诸如static :: saving,static :: saved等模型事件,并且在用户保存新帖子时效果很好,但是当我做这样的事情时:
$post::where('id', $post_id)->update(array('published'=>1));
以这种方式更新不会运行这些模型事件。 我目前的解决方案是不使用这种更新方法,而是做:
$post = Post::find($post_id);
$post->published = 1;
$post->save();
但有没有什么办法让模型事件与使用查询生成器的第一个示例一起工作?
模型事件根本不适用于查询生成器。
一种选择是使用事件侦听器illuminate.query
从/Illuminate/Database/Connection.php
。 但是这只适用于saved
, updated
和deleted
。 并且需要一些工作,包括处理查询和查找SQL子句,更不用说这样的DB可移植性问题。
第二种选择,你不想要的是雄辩。 你仍然应该考虑它,因为你已经定义了事件。 这样您也可以使用以-ing
结尾的事件。