2017-05-10 100 views
1

我被困在将此SQL查询转换为Laravel中的雄辩查询。 SQL查询工作(在续集测试),但我不能在雄辩写...Laravel雄辩地与关系

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

这是我到目前为止已经试过,但它返回的所有问题,(忽略子网站过滤器)。

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

感谢您的帮助

回答

0

按照你核心的SQL查询,这里是你的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

对不起,它的我的错误使用$查询,而不是$猫 –

+0

您可以直接在'if'语句中的'$ query'调用' - > get()',不需要额外的行。 (编辑该错误并将错字标记为答案,以便将其标记为解决方案?) – nclsvh

+0

我试图对您的答案提出编辑建议,但有些人没有长时间看它以查看我的观点是否有效。无论如何,如果你可以改变它,我可以将它标记为答案! – nclsvh