所以,我试图选择一些记录,如果他们不存在于另一个表中。 我有三个型号,铅,SalesLog和的Cron和想法是让已经不在SalesLog所有引线和在created_at
字段大于或等于比Cronsduplicated_days
场。选择所有不存在于另一个表中的记录Laravel
到目前为止,有一些看起来像这样,但它不是在所有
$leads = Lead::whereIn('status', [$minimumRequiredStatus])->whereNotIn('id', function($query) use ($cron) {
$query->table('sales_log')->select(['id'])->where('campaign', $cron->campaign);
})->get();
工作,我可以使用过滤器,但我最终可能会被成千上万的leads
两个工作并可能数以百万计的记录和sales_log
tables ..这让我担心离线做它。
我怎么能运行一个查询,只会得到所有leads
是所要求的状态,尚未在sales_log
内,其created_at
场等于或大于,例如说30天。
这个带有过滤器的版本实际上是按照预期的方式工作的,但是我担心这种操作在两个表上都有几个记录会对性能产生影响。
$leads = $cron->campaign->validLeads->filter(function($lead) use ($cron) {
if($cron->salesLogs->contains(SalesLog::LEAD_ID, $lead->{Lead::ID}))
return false;
return true;
});
至于型号都在关注我有4款车型应该用于此处时,铅模式,是指包含导线用于每个活动一个活动模型中leads
表,Cron模型包含所有Crons 属于 a Campaign。 最后有一个SalesLog模型中,所有的线索,一旦通过CURL发送被添加到这个表,这是我怎么能告诉从而导致被送往以及其中活动
因此,回顾一下
活动是它可以访问铅模型中的顶级型号,并通过的hasMany关系的Cron模型。
铅是表格的模型,其中所有铅存储。无论广告系列如何。它属于一个活动和有许多SalesLog
的克朗也属于一个活动和通过其他模型有很多销售日志。
最后,SalesLog属于一个活动也属于一个铅
这样的想法是通过克朗我可以访问所有SalesLogs为克朗,我需要得到所有潜在客户从活动其中领导的ID不在SalesLogs为运动
你试过'雄辩:hasNot()方法吗? –
@AddWebSolutionPvtLtd我找不到该方法的文档,你能给我一个链接吗? –
[请求链接](https://github.com/laravel/framework/issues/3413)。这是GIT请求链接。希望这会帮助你。 –