Как я могу выбрать запись данных, где в объекте JSON в связанном ORM Laravel - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть 2 модели Корзина и продукт В моей таблице продуктов есть столбец объекта json, и я пишу такой код

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

Но laravel не возвращает мне данные.Сгенерируйте эту ошибку

SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец «продукт» в «месте предложения» (SQL: выберите * из shopping_cards, где json_contains (product -> ')$. \ "store \". \ "id \" ', 39))

И моя структура данных такова

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

1 Ответ

0 голосов
/ 23 ноября 2018

Когда вы используете with в Laravel Eloquent, он не захватывает другую таблицу, он создает 2 запроса, поэтому вы не можете выполнять такие запросы.

Вы можете использовать:

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

Или используйте оператор JOIN .

...