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数组.再次感谢你的帮助.

上一篇:基于 SurfaceView 的直播点亮心形效果


下一篇:渴望加载深层嵌套的关系?