提问者:小点点

如何在相关ORM Laravel中选择json对象中的数据写入位置


我有两个模型篮和产品,我的产品表有json对象列,我编写的代码如下

            $basket=Basket::with("product")->whereJsonContains("product->store->id",$stores_id)->get();

但拉威尔不给我回数据。抛出这个错误

SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“product”(SQL:select*fromshopping\u cardswhere json\u包含(product-

我的数据结构是这样的

{
        "id": 3,
        "users_id": 1,
        "quantity": 1,
        "product": {
            "id": 116,
            "store": {
                "id": 39,
                "status": 41,
            }
         }
}

共1个答案

匿名用户

当您在Laravel Eloquent中与一起使用时,它不会抓取另一个表,它会创建2个查询,所以您不能像这样进行查询。

您可以使用:

$basket = Basket::whereHas('product', function ($query) use ($stores_id) {
    $query->whereJsonContains('store->id', $stores_id);
})->get();

或者使用JOIN语句。