如果在Laravel 4中的Eloquent模型中执行条件INSERT或DELETE,则触发事件

时间:2014-10-01 20:46:23

标签: events laravel-4 eloquent

我有以下3个雄辩的模型:

商家 [id,name]

MailingList [id,business_id,name,aggregation]

通讯录 [id,电子邮件,姓名]

MailingLists 属于一个 Business (hens business_id),而 Contact 属于许多 MailingLists 。现在,每个 Business 都有一个名为“所有联系人”的 MailingList ,其中聚合设置为TRUE。

如果将联系人添加到商家邮件列表,则还应将其添加到“所有联系人” MailingList (但只有一次)。如果从“所有联系人” MailingList 中删除联系人,则还应从该商家<的所有其他 MailingList 中删除联系 / em>的

我确信如果在“所有联系人”邮件列表中的任何一个上执行 INSERT ,并且如果执行 DELETE ,则必须有一种方法来触发事件在“所有联系人”邮件列表中,只有我想不到一个。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:1)

在Eloquent的上下文中,您可以使用单独的模型:例如MailingListAggregateMailingList

后者将成为给定业务的所有联系人的只读汇总。您可以使用视图在db中处理它并将其设置为protected $table的{​​{1}}属性。

这样您就不必担心所要求的事件。


但是,如果您想通过活动来处理,请查看:http://laravel.com/docs/4.2/eloquent#model-eventshttp://laravel.com/docs/4.2/events

我建议创建单独的类作为事件处理程序并将您的逻辑放在那里,然后简单地将其注册为事件的侦听器,例如:AggregateMailingList