2016-11-04 12 views
2

私はAssetモデルとAssetCategoryモデルを持っています。 assetモデルはLaravel:オーダーメイド1対1の逆関係

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

マイassets表は列idnameassetcategory_idを持っている機能を持っています。

私は私の資産リストを移入し、資産名に応じてそれをソートするとき今、私は単に

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

を書くことができますしかし、どのように私は一種の私に移入されている資産分類に応じません出力。私はlaravelを使用しています。5.3

+0

アセットカテゴリにはどのような列がありますか?ソートに使用したいものはどれですか? – imrealashu

答えて

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

+0

返事をありがとう。ごめんなさい。しかし、私は Asset :: join( 'assetcategories'、 'assets.assetcategory_id'、 '='、 'assetcategories.id') - > orderby( 'assetcategories.name'、 'asc')を使って問題を解決できました。 - > with( 'assetcategory') - > get(); 私はまた、まずassetcategoriesテーブルを読み込むことを熱心に試みました。しかしそれは以前と同じ結果を生み出しました。 –

+0

どこにでも試してみることができなかったので、非常に小さなグリッジを持つことができました。あなたがそれを作ったと聞いてうれしいです。 :) – imrealashu

0

は、あなたのモデルあなたが

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

あなたは資産カテゴリーをフェッチすることができ、このように資産名を取得することができ、あなたのコントローラで今

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

にこのような機能を持っていることを前提としています

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

これが動作するかどうかを教えてください。

0

あなたは

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

は、テーブル名としてassetsasset_categoriesを撮影...このようにそれを行うことができます。

+0

返事をありがとう。ごめんなさい。しかし、私はこの問題をAsset :: join( 'assetcategories'、 'assets.assetcategory_id'、 '='、 'assetcategories.id') - > orderby( 'assetcategories.name'、 'asc')を使って解決できました。 - > with( 'assetcategor y') - > get();私はまた、まずassetcategoriesテーブルを読み込むことを熱心に試みました。しかしそれは以前と同じ結果を生み出しました。 –