2016-11-04 2 views
2

나는 Asset 모델과 AssetCategory 모델을 가지고 있습니다. asset 모델은Laravel : 주문 방법 일대일 대응 관계

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

assets 테이블 열 id, name, assetcategory_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 테이블을 먼저 로딩하려고 열심히 노력했다. 그러나 그것은 이전과 같은 결과를 낳았습니다. –