2017-01-22 1 views
0

내 웹 사이트에서 사용자가 이미지/이미지/좋아하는 이미지/등을 업로드 할 수 있도록 허용합니다.Laravel의 다른 테이블의 orderBy 속성

따라서, 나는 이미지의 테이블을 가지고, 등, 즐겨 찾기, 좋아하는

내가 얻고 잘 이러한 이미지를 표시하고 내가 좋아하는 그들을 정렬 할 수 있습니다

$images = Images::orderBy('id', 'desc')->Paginate(50); 

내가 할 수있는 또한 이미지에 얼마나 좋아하는/즐겨 찾기가 표시되는지 보여줍니다.

$favCount = Favorite::where('image_id', $image->id)->count(); 

그러나 내가 갖고있는 즐겨 찾기의 개수를 기준으로 이미지를 정렬하려면 어떻게해야합니까? 내가 가장 좋아하는 모델과 이미지 모델을 가지고 있지만 어떻게 할 것인지 잘 모르겠습니다.

편집 : 주어진 답변

현재 쿼리

$images = Images::join('favorites', 'favorites.image_id', '=', 'images.id') 
->select('images.link', DB::raw('count(favorites.id) as favs')) 
->orderBy('favs', 'desc') 
->groupBy('images.link') 
->take(10) 
->get();   

그리고 오류는 다음과 같습니다

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'images' in 'field list' (SQL: select images , count(favorites.id) as favs from images inner join favorites on favorites . image_id = images . id group by images . link order by favs desc limit 10)

+1

'DB'로 시도해 봤습니까? 오류는'Images :: raw()'에서 비롯된 것 같습니다. 'Images :: raw'를'DB :: raw()'로 바꾸어보십시오. 또는 내가했던 것처럼'DB'를 사용하여 모든 쿼리를 수행하십시오. 결과를 확인하십시오. 부디. – EddyTheDove

+0

아, 네가 옳았다. 죄송합니다. 원시 표현을 사용하는 것은 이번이 처음입니다. 그래도 오류가 발생했습니다. 새로운 질의와 오류는 메인 포스트에있을 것입니다. 도와 줘서 고마워! –

+1

'link' 또는'name' 속성이 있다면'images' 테이블에 있습니다. 'select ('link', DB :: raw ('count (favorites.id) as favs'))'를 시도하십시오. 'images'테이블에 'images'속성이없는 것 같습니다. 내가 한 것처럼'DB'로 모든 것을 시도해 볼 수 있습니까? – EddyTheDove

답변

1

할 수 있습니다이 같은 사용자 쿼리 빌더 :

$images = DB::table('images') 
->join('favorites', 'favorites.image_id', '=', 'images.id') 
->select('images.link', DB::raw('count(favourites.id) as favs')) 
->orderBy('favs', 'desc') //order in descending order 
->groupBy('images.link') 
->take(10) //limit the images to Top 10 favorite images. 
->get(); 

동일하게 Eloquent로 수행 할 수 있습니다.

+0

line -> select ('images.link', Images :: raw ('count (favourites.id) as favs')는 오류를 발생시킵니다 구문 분석 오류 : 예기치 않은 ';', 예상 ','또는 ') '. 그 줄과 줄을 지우고 나면 그 줄과 줄만 빼면 오류가 없습니다. (즐겨 찾기로 모든 이미지를 반환합니다) –

+0

nvm 닫는 대괄호가 없습니다. 이제 strtolower()는 매개 변수 1이 문자열, 객체가 주어질 것을 기대합니다 –

+1

어떤 줄에서 오류가 발생합니까? 이 코드는 컴퓨터에서 잘 작동합니다 (누락 된 괄호를 수정 한 후). – EddyTheDove

1

귀하의 질의가 있어야합니다.

$images = Images::join('favorites', 'favorites.image_id', '=', 'images.id') 
->orderBy('favs', 'desc') 
->groupBy('images.link') 
->take(10) 
->get(['images.link', DB::raw('count(favorites.id) as favs')]); 
+0

메인 포스트에 붙여 넣었습니다. 응답 해 주셔서 감사합니다. 하지만 여전히 위와 같은 오류가 발생합니다. SQLSTATE [42S22] : Column not found : 1054 알 수없는 열 'images.link'in 'field list' –

+0

Hey Felix. 'link'는 제가 만든 속성입니다. 자신의'Image' 모델 속성을 넣으십시오. 부디. Patel에게 가입 해 주셔서 감사합니다. – EddyTheDove

+0

Ok 이미지와 함께 images.link를 전환 해 보았습니다.제목을 사용하고 블레이드 템플릿의 foreach 루프에서 {{$ image-> title}}을 (를) 사용하여 이미지 제목 목록을 인쇄 할 수는 있지만 {{$ image -> 설명}}. 이상적으로 나는 테이블의 모든 속성을 얻을 수 있기를 원합니다. –