2016-03-28 104 views
1

我有以下工作SQL查詢,並將其工作正常如何寫SQL在laravel連接查詢

我已經在數據庫測試(SQL編輯器)

select b.name "group_id", b.name "group_name",bt.name "group_type",a.location_name ,b.total_users ,group_concat(u.full_name) "members",group_concat(ui.picture_1) "pictures",(select picture_1 from user_pictures where id IN 
(select uii.profile_id from users as uii where uii.id = b.owner_id)) as owner_images 
from users u 
inner join groups b 
inner join group_types bt 
inner join group_users bu 
inner join addresses a 
inner join user_pictures ui 
on 
u.id=bu.user_id and 
b.id=bu.group_id and 
bt.id=b.type_id and 
a.id=b.address_id and 
ui.id =u.profile_id and 
bu.status="active" and bu.user_id=3 and b.owner_id <> 3 
group by b.name, bt.name, bu.status 

樣本OUTPUT

enter image description here

問題:我想將它轉換成laravel格式。

我想除了圖片領域

$groupInfo = DB::table('users as u')      
           ->join('group_users as bu', 'bu.user_id', '=', 'u.id') 
           ->join('groups as b', 'b.id', '=', 'bu.group_id') 
           ->join('group_types as bt', 'bt.id', '=', 'b.type_id') 
           ->join('addresses as a', 'a.id', '=', 'b.address_id') 
           ->join('user_images as ui', 'ui.id', '=', 'u.profile_id')    
           ->where('bu.status', '=', 'active') 
           ->where('bu.user_id', '=', $user_id) 
           ->where('b.owner_id', '<>', $user_id) 
           ->groupBy('b.name') 
           ->groupBy('bt.name') 
           ->groupBy('bu.status') 
           ->select('b.id as group_id','b.name as group_name','bt.name as group_type','b.owner_id','a.location_name','b.total_users',DB::raw('group_concat(u.id) as members'),DB::raw('group_concat(ui.image_1) as images')) 
           ->get(); 

     return $groupInfo; 

如何添加按照以上laravel查詢SQL內部查詢下面讓一切?

(select picture_1 from user_pictures where id IN 
(select uii.profile_id from users as uii where uii.id = b.owner_id)) as owner_pictures 

我怎樣才能得到我的查詢執行?

回答

0

這是樣本。您可以編輯更多並使用此查詢

$results= \DB::table('groups as b') 
       ->join('group_types as bt', function($join) { 
        $join->on('bt.id', '=', 'b.type_id') 
         ->where('b.owner_id', '<>', 3); 
       }) 
       ->join('group_users as bu', function($join) { 
        $join->on('b.id', '=', 'bu.group_id') 
         ->where('bu.status', '=', 'active'); 
       }) 
       ->select('b.name','bt.name') 
       ->groupBy('b.name, bt.name')      
       ->get(); 
0

以此示例爲例,對其進行修改。

$GetData= Table1::Join('Table2', 'Table1.Id', '=', 'Table2.Id') 
    ->where('MasterId',$MasterId) //optional where clause, if u have any spl condition. 
    ->get(); 

表1是型號名稱。