雄辩的where子句不采用关联数组

我正在尝试使用雄辩的方式将关联数组传递给where子句,但出现错误。

这是我通过的样本

$where_array = [
       'last_name' => 'Smith',
       'first_name' => 'John'
];

$match = MyClass::where($where_array)->get();

这将返回如下错误:

"message": "SQLSTATE[42S22]: Column not found: 1054 Unknown column '{\"last_name\":\"Smith\",\"first_name\":\"John\"}' in 'where clause' (SQL: select * from my_class where {\"last_name\":\"Smith\",\"first_name\":\"John\"} is null and my_class.deleted_at is null limit 1)", "exception": "Illuminate\Database\QueryException", "file": "/home/vagrant/code/unity/vendor/laravel/framework/src/Illuminate/Database/Connection.php", "line": 669,

我不知道为什么它不接受数组或为什么要检查它是否为null。是否有一些我不包括的库使这种格式起作用?为什么查询中包含对象{}括号?它会变成某个地方的物体吗?

评论
  • 花朵朵
    花朵朵 回复

    根据文档,传递以下参数的正确格式如下:

    您还可以将条件数组传递给where函数:      $ users = DB :: table('users')-> where([       ['状态','=','1'],       ['subscribed','<>','1'],])-> get();

    在您的情况下,您需要将代码更改为:

    $where_array = [
           ['last_name' ,'=', 'Smith'],
           ['first_name' ,'=', 'John'],
    ];
    
    $match = MyClass::where($where_array)->get();
    
  • 带我飞
    带我飞 回复

    我找到了。我的代码的另一部分是在将数组打入查询之前将其转换为集合,对不起,我很抱歉。

  • 番小茄
    番小茄 回复

    我的朋友,在where子句中,您至少需要传递2个参数,第一个是要在其中应用条件的模型中列的名称。

    例如: 我想在用户表中找到一个名称为“侯赛因”的用户。

    $user = User::where('name','hossein')->first();