2016-09-03 25 views
1

選擇連接查詢的特定型號我有3種型號如何Laravel

  • user
  • helper
  • order

user連接到helper許多一對多helper_user數據透視表,並連接到orders多對多order_user數據透視表。

我可以很容易地 '通過

class Helper extends Model { 
... 
    public function users() { 
     return $this->belongsToMany('App\User') 
    } 
... 
} 

小號user S和我可以輕鬆地選擇user' 選擇helpers通過

class User extends Model { 
... 
    public function orders() { 
     return $this->hasMany('App\Order'); 
    } 
... 
} 

小號order秒,但我該如何選擇helperorder小號?

我想:

class Helper extends Model { 
... 
    public function orders() { 
     return $this->users()->join('orders', 'users.id', '=', 'orders.user_id')->select('orders.*'); 
    } 
... 
} 

這將返回order S,但他們班是App\User

+0

'helper'和'order'通過'user'表連接。不知道你如何定義這種關係。但是你可以很容易地用foreach循環獲取'helper's order's'。 'foreach($ helper-> users as $ user)$ helpers_orders [] = $ user-> orders-> toArray();'。 –

回答

3

沒有必要在輔助模型中定義與訂單關係的方法。您可以使用dot syntax獲取訂單。

$usersOrders = App\Helper::with('users.orders')->get();