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