我正在开发一个应用程序,该应用程序的一部分需要使用AND来搜索同一模型上的多个不同字段-也可以找到年龄,其中$from和$to之间AND性别为$gender.我迷路的地方是该模型与Category有很多关系,因此我需要在同一查询中按类别进行过滤.我试图在一个查询中执行此操作,因为它需要非常快.
这是我到目前为止的内容:
$categories = Input::get('categories');
$query = Program::with('categories')->whereIn('category', $categories)->query();
if ($ages = Input::get('ages')) {
$query->whereBetween('age',array($from,$to));
}
if ($gender = Input::get('gender')) {
$query->where('gender','like', $gender);
}
// Executes the query and fetches it's results
$programs = $query->get();
我从许多不同的来源将它们放在一起,我想知道这是否可行,或者这是否是最有效的方法.当然,有一个表程序,一个表类别以及一个具有列id,program_id和category_id的表program_category.
在此先感谢您的帮助!
解决方法:
因此,最终弄清楚了:
$query = Program::whereHas('categories', function($q) use ($categories)
{
$q->whereIn('categories.id', $categories);
});
“类别”是我的程序模型上关系函数的名称. $categories是我的类别ID数组.再次感谢你的帮助.