mysql - Laravel 或Where 给出意想不到的结果

标签 mysql laravel

我有一个疑问。

  $bid_check        =     Bidders::where([

                                          'project_id'  =>    $id,

                                          'status'      =>    1,

                                          'active'      =>    1,

                                        ])

                                        ->orWhere([

                                                  'project_id'  =>    $id,

                                                  'status'      =>    2,

                                                  'active'      =>    1

                                                ])

                                ->first();

                                print_r($bid_check);die;

当我在没有 orWhere 的情况下编写它时,它没有显示任何结果,这是可以的,但是当我编写 orWhere 时,它​​给出了数据库的第一列,这是错误的。 where 和 orWhere 中的条件与数据库中的任何列都不匹配。因此,它应该返回空,但它返回数据库的第一列。为什么它返回一个值,有人遇到过同样的问题吗?

最佳答案

如果使用 whereIn 函数会更好

Bidders::where(['project_id'=>$id,'active'=>1])
         ->whereIn('status', [1,2])
         ->first();

我认为 orWhere 中的数组是作为 or 子句列表创建的,而不是作为 and 子句创建的,因此您将拥有 or project_id = $id 或 active = 1 或 status = 2

如果上述情况属实,那么您应该执行以下操作

->orWhere(function($query) {
     return $query->where([
       'project_id'  =>    $id,
       'status'      =>    2,
       'active'      =>    1
    ]);
});

关于mysql - Laravel 或Where 给出意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51925767/

相关文章:

Laravel 5.0,env() 在并发请求期间返回 null

MYSQL 从表中删除第一个重复项

php - 如何让 Laravel 5 命令像恶魔一样运行

php - 在 laravel 中为资源的每个方法分配单独的中间件

mysql - heroku Node jscleardb mysql失败: ER_ACCESS_DENIED_ERROR: Access denied for user

reactjs - 我如何从 laravel api 推送通知来 react native 应用程序?

php - 为什么我在使用 Laravel redis 集群时出现异常?

php - 将纪元时间转换为 H :mm timestamp in PHP

java - Eclipse - 将 .jar 添加到动态 Web 项目

java - 使用嵌入主键列表进行查询