如何选择将数据写入相关ORM Laravel

时间:2018-11-23 08:20:18

标签: php mysql laravel-5 orm eloquent

我有2个模特  篮子和产品 我的产品表中有json对象列,我写这样的代码

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

但是laravel不会向我返回数据。 引发此错误

  

SQLSTATE [42S22]:找不到列:1054中的未知列'product'   “ where子句”(SQL:从shopping_cards中选择* where   json_contains(product->'$。\“ store \”。\“ id \”',39))

我的数据结构是这样的

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

1 个答案:

答案 0 :(得分:0)

在Laravel Eloquent中使用with时,它不会抓住其他表,而是创建2个查询,因此您不能像这样查询。

您可以使用:

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

或使用 JOIN 语句。