8
Laravel看起來像一個非常漂亮的PHP框架,捆綁了一個好的ORM(Eloquent)。然而,laravel文檔是缺乏的。只有基本的東西出現在文檔中。Laravel雄辯和複雜的關係
無論如何,當涉及超過2個模型的雄辯和模型關係時,我有一個問題。
例如,我有以下情況。
我有即4個數據庫表:users
,locations
,users_locations
,packages
。 和模型/表之間的關係如下:
用戶可以屬於多個位置,反之亦然。 一個位置可以有很多包。
而我相應的模型關係如下:
//User Model:
public function locations(){
return $this->belongsToMany('Location', 'users_locations', 'user_id', 'location_id');
}
//Location Model:
public function users(){
return $this->belongsToMany('User', 'users_locations', 'location_id', 'user_id');
}
public function packages(){
return $this->hasMany('Package', 'location_id');
}
//Package Model:
public function location(){
return $this->belongsTo('Location', 'location_id');
}
我想要什麼呢?:我想要獲取屬於用戶的所有包。用戶屬於位置,包也屬於位置。因此,從屬於用戶的所有位置,我想檢索屬於這些用戶位置的包。 我也希望結果集分頁。
我曾嘗試以下:
//get the logged in user ID
$userId = Auth::user()->id
//first get all the locations of the user
$locations= User::with('locations')->find($userId)->locations;
//declare an empty array to store the packages
$packages = array();
//now loop through the locations
foreach($locations as $location){
//since each location can have many packages, we also have to loop through the packages
foreach($location->packages as $package){
//store the plan in the array
$packages[] = $package;
}
}
//ok now we got the list of packages
return $packages;
的問題是,上述,我不能在包實現分頁。有誰知道如何正確使用口頭禪並以有效的方式做到這一點?或者它是不可能的?
可以用'paginate($ page_size)'代替。有沒有一個能夠獲得上述結果的雄辯線條代碼? – WebNovice
感謝關於paginate()的提示 - 我完全忘了它。至於雄辯,我不認爲你可以用一次滑動來做到這一點,雖然在將來看到它會非常優雅。最後,您可以隨時使用Fluent並根據需要加入表格。 –