gpt4 book ai didi

mysql - 选择另一个表 Laravel 中不存在的所有记录

转载 作者:行者123 更新时间:2023-11-29 02:46:50 24 4
gpt4 key购买 nike

因此,如果它们不存在于另一个表中,我将尝试选择一些记录。我有三个模型,LeadSalesLogCron,我的想法是获取所有尚未在 SalesLog 中的潜在客户以及 created_at字段大于或等于 Crons duplicated_days 字段。

到目前为止有一些看起来像这样的东西,但它根本不起作用

    $leads = Lead::whereIn('status', [$minimumRequiredStatus])->whereNotIn('id', function($query) use ($cron) {

$query->table('sales_log')->select(['id'])->where('campaign', $cron->campaign);

})->get();

我可以为此使用过滤器,但我最终可能会在 leadssales_log 表上处理数千甚至数百万条记录。这让我担心离线进行。

我如何运行一个查询来简单地获取所有处于所需状态的 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 个模型应该在这里使用,一个 Lead 模型,它指的是一个 leads 表,其中包含每个事件的潜在客户 strong>Campaign 模型,一个 Cron 模型,包含所有 属于 一个 Campaign 的 Cron。最后还有一个 SalesLog 模型,所有的线索,一旦通过 CURL 发送,就会被添加到这个表中,这就是我如何判断哪些线索被发送到了哪个Campaign

总结一下

Campaign 是顶级模型,它可以通过hasMany Lead 模型和Cron 模型em> 关系。

Lead 是存储ALL 线索的表的模型。无论竞选事件如何。它属于一个Campaign并且有很多 SalesLog

Cron属于一个事件并且有很多销售日志通过另一个模型。

最后,SalesLog属于一个Campaign,也属于一个Lead

所以我的想法是通过 Cron 我可以访问该 Cron 的所有 SalesLogs,并且我需要从 Leads strong>Campaign,其中 Lead 的 ID 不在该Campaign

SalesLogs

最佳答案

左连接还不够吗?

$leads = Lead::whereIn('status', [$minimumRequiredStatus])
->leftJoin('sales_log', function ($join) use ($cron) {
$join->on('leads.id', '=', 'sales_log.lead_id')
->where('sales_log.campaign_id', '=', $cron->campaign->campaign_id);
})
->whereNull('sales_log.id')
->where('created_at', '>=', Carbon::now()->subDays(30))
->get();

关于mysql - 选择另一个表 Laravel 中不存在的所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40972922/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com