항목 목록 (논문)이 있으며 특정 영역의 모든 논문을 표시하려고합니다. 이제 사용자가 다른 속성에 따라 논문 목록을 필터링 할 수 있기를 바랍니다. Laravel 조인 및 매개 변수가있는 간략한 쿼리
이
내가 웅변 관련 유지하기 위해 노력하고있어Papers
id
name
author_id
year
paperQuality
userRating
Authors
id
name
birthDate
Paper_areas
id
paper_id
area_id
significance
Area
id
name
creationYear
테이블/모델입니다. 사용자는이 내가 지금 2011 년의 논문만을 지금
$paper_areas_query = Paper_areas::join('areas', function($join){
$join->on('areas.id', '=', 'paper_areas.area_id')
->where('areas.creationYear', '=', 2011);
});
$paper_areas_query->join('papers', function($join){
$join->on('papers.id', '=', 'paper_areas.paper_id')
->where('papers.year', '=', 2011)
->where('papers.paperQuality', '=', 4)
->where('papers.userRating', '=', 5);
});
$paper_areas_query->join('authors', function($join){
$join->on('authors.id', '=', 'papers.author_id');
});
$paper_areas_query->select('paper_areas.id', 'paper_areas.paper_id', 'paper_areas.area_id');
$paper_areas_query->orderBy('authors.name','asc');
$paper_areas_query->orderBy('papers.title','asc');
$paper_areas_query->groupBy('papers.id');
에 의해이 무엇
, area.creationYear
papers.year, papers.paperQuality, papers.Rating, paper_areas_significance 후 필터링 할 수 있어야한다 표시되지만 2 가지 문제가 있습니다.url에서 가져온 매개 변수를 사용하여 연 반복 할 수 있습니까?
어떻게 내가 Paper_areas 컬렉션을 가지고있는 방식으로 결과 집합을 필터링 할 수 있습니까? 위의 코드를 살펴보면 다른 코드처럼 "좋지 않은"것처럼 보입니다.
Paper_areas 테이블의 'topic_id' 열이'Areas' 테이블의 키입니까? –
예, 죄송합니다 - 이름을 변경했습니다 – simon