These are chat archives for LaravelRUS/chat

18th
Dec 2018
zesen
@zesen
Dec 18 2018 13:00

Здравствуйте! Подскажи, пожалуйста, как сделать запрос через Eloquent ORM с загрузкой зависимостей и пагинацией.
Есть табличка Product, есть табличка Shop, есть связующая таблица Shop_Product по id product и id shop.
Нужно выбрать все Product с определенным category_id(это поле в таблице Product)
и определенным city_id (city_id находиться в таблице Shop)

Вот кусок без привязки с city_id:

$catId = 1;
$imageSizeId = 2;

$products = Product::select(
    'id',
    'name',
    'val1',
    'val2'
)->where('category_id', $catId)
    ->with(
        [
            'productImages' => function ($query) use ($imageSizeId) {
                $query->where('image_size', $imageSizeId);
            }
        ]
    )
    ->simplePaginate(Config::get(20));

Вот код без пагинации и загрузки зависимостей, может и не правильный, сейчас нет возможности проверить:

$cityId = 3;

DB::table('product')
    ->join('shop_product', 'product.id', '=', 'shop_product.product_id')
    ->join('shop', 'shop.city_id', '=', $cityId)
    ->where('category_id', '=', $catId)
    ->get();

Если сделать так верно будет?

$products = Product::select(
    'id',
    'name',
    'val1',
    'val2'    
)->join('shop_product', 'product.id', '=', 'shop_product.product_id')
    ->join('shop', 'shop.city_id', '=', $cityId)
    ->where('category_id', $catId)
    ->with(
        [
            'productImages' => function ($query) use ($imageSizeId) {
                $query->where('image_size', $imageSizeId);
            }
        ]
    )
    ->simplePaginate(Config::get(20));