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

标签 php sql orm laravel eloquent

我正在开发一个应用程序,其中一部分需要使用 AND 搜索同一模型上的多个不同字段 - 又名查找年龄 whereBetween $from$to 并且性别是 $gender。我迷路的地方是这个模型与类别有多对多的关系,我需要在同一个查询中按类别过滤。我试图在一个查询中执行此操作,因为它需要非常快。

这是我目前所拥有的:

    $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();

我从很多不同的来源把它放在一起,我想知道这是否有效,或者它是否是最有效的方法。当然有一个表programs,一个表categories,还有一个表program_category,列有idprogram_idcategory_id

预先感谢您的帮助!

最佳答案

所以,最后弄明白了:

$query = Program::whereHas('categories', function($q) use ($categories)
    {
        $q->whereIn('categories.id', $categories);
    });

'categories' 是我的程序模型中关系函数的名称。 $categories 是我的类别 ID 数组。再次感谢您的帮助。

关于php - Laravel 4.1 WhereIn w/多对多关系和条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22390767/

相关文章:

php - 多个 "agents"处理单个数组

php - 我可以在 Mysql 数据库中使用 Mysqli 吗?

php 和 mysql 实时提要

php - MySQL 未添加到数据库

java - hibernate 缩小延迟加载集合范围

mysql - MySQL 主键是否已经处于某种默认顺序

sql - 我加入第二张 table 时的总和不正确

sql - 引用自身的外键列的作用(或目的)是什么?

python - SQLAlchemy ORM 重构器的替代品

java - 从 EntityManager 或 Hibernate Session 获取 PersistentSet