php 条件 在之间的关系,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数组.再次感谢你的帮助.

标签:laravel,eloquent,orm,sql,php

来源: https://codeday.me/bug/20191122/2056087.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值