gpt4 book ai didi

php - Laravel Eloquent 多表

转载 作者:行者123 更新时间:2023-11-29 20:12:18 24 4
gpt4 key购买 nike

我有一个复杂的设置,其中包括下表。

Customers
Transactions
Jobs
Rounds
Job_Rounds

我想输出所有逾期的客户。我通过使用以下查询来完成此操作:

$data = Auth::user()->clients()->leftjoin('transactions','clients.id','=','transactions.client_id')
->select(DB::raw('sum(gross) as value, email, first_name, last_name, mobile, clients.id, addressline1'))
->groupBy('id','first_name','last_name','email','mobile','addressline1', 'clients.id')
->havingRaw('SUM(gross) < 0')
->get();

这会返回所有逾期的客户,这很好,但是我现在希望能够逐轮过滤逾期的客户。

我的关系如下:

Customers > Jobs.client_id
Customers > Transactions.client_id
Jobs > Rounds via Jobs_Rounds

我会将给定回合的 round_id 传递给 Controller ​​,然后尝试根据 round_id 过滤结果。我存储回合 ID 的唯一位置是 jobs_rounds 表中,并且该表仅包含 job_id 和 round_id。

最佳答案

我正在考虑使用 HasManyThrough 关系来链接 CustomerRound

类似这样的事情:

// Customer.php
public function rounds()
{
return $this->hasManyThrough(Round::class, Job::class, 'client_id', 'job_id', 'id');
}

然后在你的 Controller 中你可以尝试这个:

$data = Auth::user()->clients()
->whereHas('rounds', function ($query) {
$query->where('id', request()->input('round_id'))
})
//... the rest of your filters

关于php - Laravel Eloquent 多表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007876/

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