2

私はAssetモデルとAssetCategoryモデルを持っています。assetモデルには機能があります

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

assetsのテーブルには列、、、がidありnameますassetcategory_id

ここで、資産リストにデータを入力し、資産名に従って並べ替えたい場合は、単純に次のように記述できます。

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

しかし、出力に取り込まれたアセット カテゴリに従って並べ替えるにはどうすればよいでしょうか。私はlaravel 5.3を使用しています

4

3 に答える 3

0

モデルにこのような関数があると仮定しましょう

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

コントローラーでアセット名を取得できるようになりました

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

このようにして、アセットカテゴリを取得できます

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

これがうまくいくかどうか教えてください。

于 2016-11-04T12:44:33.940 に答える
0

参加は簡単で、問題を解決します。

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 の適切な命名規則を使用していると仮定しています。それがうまくいくかどうか教えてください。

于 2016-11-04T11:26:24.167 に答える