如何在laravel中使用带有查询构建器的模型事件

时间:2014-08-07 11:16:38

标签: events laravel model query-builder

我在我的模型中使用了静态::保存,静态::保存等模型事件。静态函数启动方法,当用户保存新帖子时效果很好,但是当我做这样的事情时:

$post::where('id', $post_id)->update(array('published'=>1));

以这种方式更新不会运行这些模型事件。我目前的解决方案是不使用这种更新方法,而是:

$post = Post::find($post_id);
$post->published = 1;
$post->save();

但有没有办法让模型事件与第一个使用查询构建器的例子一起工作?

1 个答案:

答案 0 :(得分:1)

模型事件根本不适用于查询构建器。

一种选择是使用illuminate.query /Illuminate/Database/Connection.phpsaved。但这仅适用于updateddeleted-ing。并且需要一些工作,包括处理查询和查找SQL子句,更不用说这种方式的数据库可移植性问题了。

你不想要的第二个选项是Eloquent。您仍应该考虑它,因为您已经定义了事件。这样您就可以使用以{{1}}结尾的事件。