Laravel 中的不同值
Distinct Values in Laravel
你好朋友我正在使用以下查询:
$cur_date = date('Y-m-d');
$clientTemp = DB::table('clients')->where('quotations.exp_date','<',$cur_date)
->join('quotations','quotations.customer_id','=','clients.id')
->get()
->map(function ($clientTemp) {
return [
'id' => $clientTemp->id,
'hash' => $clientTemp->hash,
'name' => $clientTemp->first_name.' '.$clientTemp->last_name,
'email' => $clientTemp->email,
'mobile' => $clientTemp->mobile
];
});
我从两个 table 中获取这些数据:
1. Qutoations
和 2. Clients
。
在引号 table 中,如果 exp_date 早于当前日期,则将从 client table
.
获取详细信息
但是有可能在引用 table 中有超过 1 行,但我只想从 customer_id 唯一的行中获取一个 table。如何从引号 table
中获取具有相同 customer_id 的唯一行
你应该使用 groupby
$cur_date = date('Y-m-d'); $clientTemp = DB::table('clients')->where('quotations.exp_date','<',$cur_date)
->join('quotations','quotations.customer_id','=','clients.id')
->->groupBy('quotations.customer_id')
->get()
->map(function ($clientTemp) {
return [
'id' => $clientTemp->id,
'hash' => $clientTemp->hash,
'name' => $clientTemp->first_name.' '.$clientTemp->last_name,
'email' => $clientTemp->email,
'mobile' => $clientTemp->mobile
];
});
您需要使用 GROUP BY 子句,但由于 MySQL 的默认 ONLY_FULL_GROUP_BY 模式,您必须聚合任何具有多个值的列。
您似乎并没有实际使用引号中的任何值,因此您可以添加:
DB::table('clients')->select('clients.*')->groupBy('clients.id')...
否则,您需要告诉 MySQL 如何聚合具有多个值的任何行,例如:
DB::table('clients')->selectRaw('clients.*, MIN(quotations.id)')->groupBy('clients.id')...
你好朋友我正在使用以下查询:
$cur_date = date('Y-m-d');
$clientTemp = DB::table('clients')->where('quotations.exp_date','<',$cur_date)
->join('quotations','quotations.customer_id','=','clients.id')
->get()
->map(function ($clientTemp) {
return [
'id' => $clientTemp->id,
'hash' => $clientTemp->hash,
'name' => $clientTemp->first_name.' '.$clientTemp->last_name,
'email' => $clientTemp->email,
'mobile' => $clientTemp->mobile
];
});
我从两个 table 中获取这些数据:
1. Qutoations
和 2. Clients
。
在引号 table 中,如果 exp_date 早于当前日期,则将从 client table
.
但是有可能在引用 table 中有超过 1 行,但我只想从 customer_id 唯一的行中获取一个 table。如何从引号 table
中获取具有相同 customer_id 的唯一行你应该使用 groupby
$cur_date = date('Y-m-d'); $clientTemp = DB::table('clients')->where('quotations.exp_date','<',$cur_date)
->join('quotations','quotations.customer_id','=','clients.id')
->->groupBy('quotations.customer_id')
->get()
->map(function ($clientTemp) {
return [
'id' => $clientTemp->id,
'hash' => $clientTemp->hash,
'name' => $clientTemp->first_name.' '.$clientTemp->last_name,
'email' => $clientTemp->email,
'mobile' => $clientTemp->mobile
];
});
您需要使用 GROUP BY 子句,但由于 MySQL 的默认 ONLY_FULL_GROUP_BY 模式,您必须聚合任何具有多个值的列。
您似乎并没有实际使用引号中的任何值,因此您可以添加:
DB::table('clients')->select('clients.*')->groupBy('clients.id')...
否则,您需要告诉 MySQL 如何聚合具有多个值的任何行,例如:
DB::table('clients')->selectRaw('clients.*, MIN(quotations.id)')->groupBy('clients.id')...