微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-Laravel 4.1 Wherein w /多对多关系和条件?

我正在开发一个应用程序,该应用程序的一部分需要使用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 举报,一经查实,本站将立刻删除。

相关推荐