我有两个模型篮和产品,我的产品表有json对象列,我编写的代码如下
$basket=Basket::with("product")->whereJsonContains("product->store->id",$stores_id)->get();
但拉威尔不给我回数据。抛出这个错误
SQLSTATE[42S22]:未找到列:“where子句”中的1054未知列“product”(SQL:select*fromshopping\u cards
where json\u包含(product
-
我的数据结构是这样的
{
"id": 3,
"users_id": 1,
"quantity": 1,
"product": {
"id": 116,
"store": {
"id": 39,
"status": 41,
}
}
}
当您在Laravel Eloquent中与一起使用时,它不会抓取另一个表,它会创建2个查询,所以您不能像这样进行查询。
您可以使用:
$basket = Basket::whereHas('product', function ($query) use ($stores_id) {
$query->whereJsonContains('store->id', $stores_id);
})->get();
或者使用JOIN语句。