2016-11-08 28 views
6
$assignment = assignment::find(Crypt::decrypt($id)); 
$assignment_details = $assignment->raw_plan()->groupBy('flag')->get(); 

Tôi muốn sau kết quả của truy vấn này trong laravellàm thế nào để sử dụng GROUP_CONCAT trong laravel

SELECT GROUP_CONCAT(name) AS 'names' FROM `raw_plans` where `assignment_id` = 1 GROUP BY`flag` 

Xin gợi ý cho tôi cách sử dụng GROUP_CONCAT trong laravel

Trả lời

12

Bạn có thể sử dụng các mối quan hệ như xây dựng truy vấn để lấy kết quả như sau:

$assignment_details = $assignment->raw_plan() 
           ->select(DB::raw('group_concat(name) as names')) 
           ->where('assignment_id', 1) 
           ->groupBy('flag') 
           ->get(); 

Cập nhật

Sử dụng table_name.* trong chọn để có được tất cả các lĩnh vực.

$assignment_details = $assignment->raw_plan() 
           ->select('raw_plans.*', DB::raw('group_concat(name) as names')) 
           ->where('assignment_id', 1) 
           ->groupBy('flag') 
           ->get(); 
+0

nhưng nó chỉ hiển thị $ assignment ['name' ]. Không thể thấy các trường khác. –

+0

Kiểm tra câu trả lời được cập nhật. Nó cũng sẽ hiển thị các lĩnh vực khác. –

2

Hãy thử với mã dưới đây

$data = DB::table('raw_plans') 
      ->select(DB::raw("GROUP_CONCAT(name SEPARATOR '-') as `names`")) 
      ->groupBy('flag') 
      ->where('assignement_id',1) 
      ->get(); 
+0

Bắt lỗi sau: Gọi đến chức năng xác định App \ Http \ Controller \ group_concat() –

+0

có thể giúp bạn chia sẻ bạn bộ điều khiển mã? – shoieb0101

+0

$ assignment = assignment :: find (Crypt :: giải mã ($ id)); $ assignment_details = $ assignment-> raw_plan() -> groupBy ('flag') -> get(); Tôi muốn sử dụng GROUP_CONCAT trong raw_plans.flag –

0

Hãy thử điều này

$sql = "SELECT GROUP_CONCAT(name) AS 'names' FROM `raw_plans` where `assignment_id` = 1 GROUP BY`flag`"; 

    $info = DB::select(DB::raw($sql)); 
5

shoieb có phần đúng, nhưng bạn nên cho tên bảng trước khi truy cập tên cột trong DB:raw()

Bạn nên cố gắng này:

$data = DB::table('raw_plans') 
      ->select(DB::raw("group_concat(raw_plans.name)")) 
      ->groupBy('flag') 
      ->where('assignement_id',1) 
      ->get(); 

Hope this helps.

+0

'table' chỉ được yêu cầu nếu bạn tham gia và có nhiều' bảng' với cùng một tên cột ', tôi đoán – shoieb0101

Các vấn đề liên quan