Laravel中的不同值

时间:2018-08-25 11:50:04

标签: php laravel laravel-5 laravel-5.2 laravel-5.1

你好朋友,我正在使用以下查询:

$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
        ];
    });

我从两个表中获取此数据:

1. Qutoations2. Clients

在报价表中,如果exp_date小于当前日期,则将从client table中获取详细信息。

但是有可能在报价表中有1行以上,但是我只想从customer_id唯一的表中获取一张表。如何从报价表中获取具有相同customer_id的唯一行

2 个答案:

答案 0 :(得分:1)

您应该使用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
        ];
    });

答案 1 :(得分:1)

您需要使用GROUP BY子句,但是由于MySQL的默认ONLY_FULL_GROUP_BY模式,您必须汇总具有多个值的任何列。

您似乎实际上并没有使用引号中的任何值,因此您可以添加:

std::lock_guard

否则,您需要告诉MySQL如何聚合具有多个值的任何行,例如:

DB::table('clients')->select('clients.*')->groupBy('clients.id')...