簡體   English   中英

Laravel:如何按一對一的逆關系排序

[英]Laravel : How to orderBy on a One to One inverse relationship

我有一個Asset模型和AssetCategory模型。 asset模型具有功能

$this->belongsTo('App\AssetCategory' ); //inverse one to one 

我的assets表具有idnameassetcategory_id列。

現在,當我要填充資產列表並根據資產名稱對其進行排序時,我可以簡單地編寫

$assets = Asset::orderBy('name' , 'asc')->get();

但是如何根據輸出中填充的資產類別進行排序。 我正在使用laravel 5.3

加入會很簡單,可以解決您的問題。

Asset::select(
'assets.id as asset_id',
'assets.name as asset_name',
'assets.assetcategory_id',
'assetcategories.name as assetcategory_name')
->leftJoin('assetcategories','assetcategories.id','=','assets.assetcategory_id')
->groupBy('asset_id')
->orderBy('assetcategory_name','asc')
->get();

注意:我假設您使用了laravel的正確命名約定。 讓我知道是否可行。

讓我們假設您在模型中具有這樣的功能

public function assetCategory()
{
  return $this->belongsTo('App\AssetCategory');
}

現在,您可以在控制器中獲取資產名稱

$assets = Asset::orderBy('name' , 'asc')->get();

這樣您可以獲取資產類別

$assets->assetCategory()->orderBy('id', 'asc')->get();

讓我知道這個是否奏效。

你可以這樣

Asset::join('asset_categories', 'assets.asset_category_id', '=', 'asset_categories.id')
    ->orderBy('asset_categories.name', 'asc')
    ->groupBy('assets.id')
    ->select('assets.*')
    ->get();

assetsasset_categories作為表名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM