我试图从包含多个where和/或子句的表中获得结果.

我的SQL语句是:

SELECT * FROM tbl
WHERE m__Id = 46
AND
t_Id = 2
AND
(Cab = 2 OR Cab = 4)

我怎么能和拉威尔·Eloquent 地谈这个?

我在Laravel的代码是:

$BType = CabRes::where('m_Id', '=', '46')
                        ->where('t_Id', '=', '2')
                        ->where('Cab', '2')
                        ->orWhere('Cab', '=', '4')
                        ->get();

推荐答案

使用advanced wheres:

CabRes::where('m__Id', 46)
      ->where('t_Id', 2)
      ->where(function($q) {
          $q->where('Cab', 2)
            ->orWhere('Cab', 4);
      })
      ->get();

或者,更好的是,使用whereIn():

CabRes::where('m__Id', 46)
      ->where('t_Id', 2)
      ->whereIn('Cab', $cabIds)
      ->get();

Sql相关问答推荐

Snowflake SQL比较克隆x原始计数

删除MariaDB数据库中的JSON数据

SQL -滞后于上一个非重复值

找到最新的连线

从数据库中查找总和大于或等于查询中的数字的数字

使用多个嵌套数组查询JSON数据

如何用客户名称计算sum(dr)和sum(cr)

在MS Access Modern图表的X轴上显示时间值时遇到问题

根据Rails活动记录中时间戳/日期时间的时间部分从PostgreSQL中提取记录

如何根据几个条件 Select 值:如果满足一个范围的SUM,则对另一个范围求和

使用递归CTE在BigQuery中获取文件路径

如何使子查询在UPDATE语句期间获得最新更新

STContains、STIntersections和STWithin返回错误的地理结果

基于变量的条件 WHERE 子句

如何在 SQL 中将两行(或多行)jsonb 数组合并为一行

SQL的左连接在多对多关系情况下使用

为重复的项目编号显示正在处理

PostgreSQL - 递归地聚合来自不同列的属性

更新表 A,然后将新值插入表 B(包含更新内容的历史日志(log))

SQLite 中的过滤运行总和视图