2017-05-10 5 views
1

이 SQL 쿼리를 Laravel의 설득력있는 쿼리로 변형하려고합니다. SQL 쿼리 이것은 내가 지금까지 시도한 것입니다Laravel eloquent where 관계가

SELECT faqs.question FROM faqs 
JOIN categories c ON c.id = faqs.category_id 
WHERE c.subsite = 'sport' 

(속편에서 테스트)하지만 난 웅변에 쓸 수 없습니다 작동하지만, 하위 사이트 필터를 무시하고 모든 질문에, (반환). 도움 당신의 핵심 SQL 쿼리에 따라

답변

0

에 대한

$cat = Faq::with(['category' => function($query) use ($subsite) { 
    $query->where('subsite', $subsite); 
}])->get(); 

덕분에, 여기 laravel 쿼리입니다.

$data = DB::table('faqs') 
      ->join('categories', 'categories.id', '=', 'faqs.category_id') 
      ->select('faqs.question') 
      ->where('categories.subsite', '=', 'sport') 
      ->get(); 

희망이 도움이 될 것입니다.

+0

감사를 시도,이 실제로 작동합니까! 나는 웅변적인 방법을 시도하거나 순수한 SQL 쿼리를 사용하고 싶었다. 어쨌든, 이것은 지금 나의 백업이다;) – nclsvh

1

$cat = Faq::query(); 
if (isset($subsite) && !empty($subsite) { 
    $query->whereHas('category', function ($query) use ($subsite) { 
      $query->where('subsite', $subsite); 
     }); 
} 
$query->with('category')->get(); 
+1

미안하지만 $ cat 대신에 $ query를 사용한다. –

+0

if 문의'$ query'에서'-> get()'을 직접 호출 할 수있다. 여분의 라인은 필요 없다. . (편집하여 답변에 오타를 입력하여 해결책으로 표시 할 수 있습니까?) – nclsvh

+0

답변에 대한 수정 제안을 시도했지만 일부 사람들은 내 포인트가 유효한지 충분히 볼 수 없었습니다. 어쨌든, 당신이 그것을 바꿀 수 있다면 나는 대답으로 표시 할 수 있습니다! – nclsvh