gpt4 book ai didi

mysql - 如何在 laravel 5.3 中将 group by 添加到 hasMany 关系中?

转载 作者:行者123 更新时间:2023-11-29 18:33:10 25 4
gpt4 key购买 nike

我有一个名为 Conversation 的 elquent 模型。

在该模型中,我在 Eloquent 模型 CallParticipant 上定义了一个 hasMany 关系,如下所示:

public function participants(){
return $this->hasMany('App\Models\Purecloud\Analytics\CallParticipant', 'conversationId', 'conversationId');
}

现在,CallParticipants 可以是系统进程、客户或代理。我需要所有被视为“代理”的 CallParticipants 的列表,因此我定义了另一个关系,如下所示:

public function agents(){
return $this->hasMany('App\Models\Purecloud\Analytics\CallParticipant', 'conversationId', 'conversationId')
->whereIn('partPurpose', ['agent','user']);
}

现在,“代理”可以在“对话”中多次成为“参与者”,也就是说,同一代理可以有多个行,但具有不同的participantId,如下所示:

+----------------+---------------+--------------+-------------+
| conversationId | participantId | partUserName | partPurpose |
+----------------+---------------+--------------+-------------+
| 1 | 100 | Alex | agent |
| 1 | 101 | Mary | agent |
| 1 | 102 | Alex | agent | <-- I want to exlcude this
+----------------+---------------+--------------+-------------+

我需要删除这些重复项,以便关系只为每个 partUserName 返回一行(Mary 一行,Alex 一行)。

我尝试通过添加这样的 groupBy 来做到这一点:

public function agents(){
return $this->hasMany('App\Models\Purecloud\Analytics\CallParticipant', 'conversationId', 'conversationId')
->whereIn('partPurpose', ['agent','user'])
->groupBy('partUserName');
}

但这会产生错误:

SQLSTATE[42000]: Syntax error or access violation: 1055 'analytics.callParticipants.participantId' isn't in GROUP BY

我也尝试在 with 语句中执行此操作,如下所示,但出现相同的错误:

$conversations = Conversation::with(
[
'agents' => function($query){
$query->groupBy('partUserName');
}
])
->get();

有什么方法可以将关系限制为仅具有唯一 partUserName 的行

最佳答案

我认为做到这一点的唯一方法是“破解”关系。你能尝试一下吗:

public function agents(){
return $this->hasOne('App\Models\Purecloud\Analytics\CallParticipant', 'conversationId', 'conversationId')
->whereIn('partPurpose', ['agent','user'])
->latest();
}

关于mysql - 如何在 laravel 5.3 中将 group by 添加到 hasMany 关系中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45527652/

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