我有以下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 ,则必须有一种方法来触发事件在“所有联系人”邮件列表中,只有我想不到一个。有人能指出我正确的方向吗?
答案 0 :(得分:1)
在Eloquent的上下文中,您可以使用单独的模型:例如MailingList
和AggregateMailingList
。
后者将成为给定业务的所有联系人的只读汇总。您可以使用视图在db中处理它并将其设置为protected $table
的{{1}}属性。
这样您就不必担心所要求的事件。
但是,如果您想通过活动来处理,请查看:http://laravel.com/docs/4.2/eloquent#model-events和http://laravel.com/docs/4.2/events。
我建议创建单独的类作为事件处理程序并将您的逻辑放在那里,然后简单地将其注册为事件的侦听器,例如:AggregateMailingList