2014-09-15 28 views
5

xin vui lòng tôi muốn sử dụng group_concat trong một truy vấn bằng cách sử dụng hùng hồn và không phải truy vấn thô.Group_concat - laravel eloquent

đây là đoạn code mà tôi đã cố gắng để thực hiện và did't làm việc cho tôi:

commands::join('products', 'products.id', '=','commands.idproduct') 
->select('commands.username','**group_concat(products.name)**') 
->group by ('commands. username') 
->get(); 

Cảm ơn trước :)

+0

Hãy thử sử dụng DB :: thô() để quấn 'raw' SQL bạn muốn trong một truy vấn: '-> select ('commands.username', DB :: raw ('group_concat (products.name)'))' – alexrussell

+0

cảm ơn cho trả lời của bạn @alexrussell nhưng vấn đề là khi tôi thêm DB :: nguyên và tôi chạy một lần nữa ứng dụng tôi nhận được lỗi này: Symfony \ Component \ Debug \ Exception \ FatalErrorException Class 'Storage \ Commands \ DB' không tìm thấy – user3481058

+0

Ahh bạn đang ở trong một không gian tên - hoặc thêm 'sử dụng DB;' sau khi khai báo không gian tên của bạn hoặc sử dụng 'DB' trong mã của bạn:' \ DB :: raw ('group_concat (products.name)') ' – alexrussell

Trả lời

10

tôi chỉ sử dụng sử dụng DB; và trong truy vấn của tôi, tôi đã sử dụng DB :: raw ('group_concat (products.name)') !!

+0

Bạn nên đánh dấu câu trả lời này là câu trả lời đúng để mọi người biết. – alexrussell

3

dụ tốt nhất cho nó ..

 
ModelName::select('ID', DB::raw('CONCAT(First_Name, " ", Last_Name) AS full_name')) 
      ->get() 
      ->toArray(); 

Result 
    Jon Doe,Jeffery Way,Tailer,taylor otwell 
0

này đã làm việc cho tôi: (9.0+)

DB::raw('string_agg(products.name, \',\') as products') 

Bạn sẽ cần phải sử dụng Illuminate \ Support \ Mặt tiền \ DB; cho điều này.

2

hoặc chỉ thay thế

->select('commands.username','**group_concat(products.name)**') 

với

->selectRaw('commands.username, **group_concat(products.name)**') 
4

này làm việc cho tôi

$list = TableName::where('user_id', 'user_001' 
     ->groupBy('user_id') 
     ->groupBy('subscription_id') 
     ->select('user_id','subscription_id','type') 
     ->selectRaw('GROUP_CONCAT(holiday) as holidays') 
     ->get(); 

hoặc

use Illuminate\Support\Facades\DB; 

$sql = 'SELECT GROUP_CONCAT(holiday) as holidays, user_id,subscription_id, type FROM TableName 
     where vendor_id = 'user_001' GROUP BY user_id, subscription_id;'; 
$list = DB::select($sql, []); 
-3

$ data = \ DB :: table ('paging_config') -> leftjoin ('paging_groups', 'paging_config.page_group', '=', 'paging_groups.page_number') -> leftjoin ('spk_mnt', 'paging_groups .ext ',' = ',' spk_mnt.stn_no ') -> chọn (' paging_config.page_group ',' paging_groups.ext ',' spk_mnt.stn_status ') -> selectRaw (' GROUP_CONCAT (mô tả DISTINCT) làm mô tả ') -> nơi (' paging_config.page_group', '=', 'paging_config.page_group') -> groupby ('paging_config.description')

 ->get(); 
+0

Chỉ cần mã là không đủ. Hãy nói điều gì đó về nó. – kwoxer

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