gpt4 book ai didi

mysql - 在 Laravel 中查询多个关系并左连接另一个表

转载 作者:行者123 更新时间:2023-11-29 19:44:51 26 4
gpt4 key购买 nike

我现在正在尝试用 Eloquent 做一些可能有点太疯狂的事情,我有一个数据库,其中有以下表格

Crons - (Has Many) - Campaign - (Has Many) - Leads - (Has Many) - Conversions

我需要从Cron获取所有潜在客户,这些潜在客户在最后X个金额的转化表中没有条目天数

我正在考虑在 Cron 模型上使用 Scope,但我完全不知道如何从这里继续。

public function scopeWithValidLeads($query) {

return $query->with(['leads' => function($q) {



}]);

}

所以我需要在以下情况成立时获得线索。

A - 潜在客户属于通过多对多关系与 Cron 关联的事件。

B - 他们在此特定广告系列下的转化表中没有记录,或者如果有记录,则潜在客户早于于 X天数。

最佳答案

您可以使用doesntHave()获得您想要的结果方法如下:

$x = 10; // last 10 days
$crons = Cron::doesntHave('compaign.leads.conversions')
->whereBetween('created_at', [Carbon::now(), Carbon::now()->addDays($x)])
->get();

Querying Relationship Absence: When accessing the records for a model, you may wish to limit your results based on the absence of a relationship. For example, imagine you want to retrieve all blog posts that don't have any comments. To do so, you may pass the name of the relationship to the doesntHave method

更新

根据更新后的提问条件,据我了解,线索可以通过以下方式获得:

$leads = Lead::whereHas('compaign', function($q) use($compaign) {
$q->has('crons')
->where('id', $compaign->id);
// Use the above line if in case of a compaign is to be filtered out
})->doesntHave('conversions')
->whereBetween('created_at', [Carbon::now(), Carbon::now()->addDays($x)])
->get();

希望这有帮助!

关于mysql - 在 Laravel 中查询多个关系并左连接另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088503/

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