Conversation
という名前のモデルがあります。そのモデルではlaravel 5.3のhasMany関係にグループを追加するにはどうすればよいですか?
私はそうのような雄弁モデルCallParticipant
にhasMany
関係を定義します。
public function participants(){
return $this->hasMany('App\Models\Purecloud\Analytics\CallParticipant', 'conversationId', 'conversationId');
}
さて、CallParticipants
は、システムプロセス、顧客、または薬することができます。
public function agents(){
return $this->hasMany('App\Models\Purecloud\Analytics\CallParticipant', 'conversationId', 'conversationId')
->whereIn('partPurpose', ['agent','user']);
}
さて、「薬剤」である「会話」の「参加者」を複数回にすることができます。私は、「エージェント」ので、私はこのような別の関係を定義したと考えられている全てのCallParticipants
のリストが必要ただ異なるparticipantIdと同じエージェントのための複数の行が存在することができると言って、このような:関係のみ各partUserName
ための一つの行を返すように
+----------------+---------------+--------------+-------------+
| conversationId | participantId | partUserName | partPurpose |
+----------------+---------------+--------------+-------------+
| 1 | 100 | Alex | agent |
| 1 | 101 | Mary | agent |
| 1 | 102 | Alex | agent | <-- I want to exlcude this
+----------------+---------------+--------------+-------------+
方には一列(これらsortof-重複を除去するために必要メアリー、そしてアレックスのために1列)。
私はこのような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
文でそれをやってみましたが、I同じエラーが発生する:
$conversations = Conversation::with(
[
'agents' => function($query){
$query->groupBy('partUserName');
}
])
->get();
私は関係を制限する方法はありますか一意の行にのみpartUserName