我有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,
}
}
}
答案 0 :(得分:0)
在Laravel Eloquent中使用with
时,它不会抓住其他表,而是创建2个查询,因此您不能像这样查询。
您可以使用:
$basket = Basket::whereHas('product', function ($query) use ($stores_id) {
$query->whereJsonContains('store->id', $stores_id);
})->get();
或使用 JOIN 语句。