我正在开发一个应用程序,该应用程序的一部分需要使用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数组.再次感谢你的帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。