Laravel порядок и ограничение результатов левого соединения - PullRequest
0 голосов
/ 30 апреля 2020

Отношения «один ко многим», каждый продукт имеет много цен

таблица products

id | имя | слизняк | создал_ат | update_at

таблица prices

id | product_id | название | цена | ссылка

Я хочу получить лимит данных таблицы лимитов 20 товаров и ордеров созданных_, и каждый продукт получит самую низкую цену, цену столбца заказа. Я хочу использовать построитель запросов. Я пытался

$products = DB::table('products')
        ->leftJoin('prices', 'products.id', '=', 'prices.product_id')
        ->select('products.id', 'products.name')->distinct()
        ->selectRaw('max(prices.price) as price')
        ->groupby('products.id')
        ->orderby('products.updated_at')
        ->get();

, но он получает все продукты и таблицы prices идентификатор столбца заказа

1 Ответ

0 голосов
/ 30 апреля 2020

Вы можете использовать Eloquent Like This

public function price() {
        return $this->hasMany('App\model\Prices' , 'product_id' ,'id');
    }

и получить вот так, Это даст вам сопоставленную цену только за указанный вами c продукт

$product = Product::with('price')
                  ->where(do the stuffs)
                  ->orderBy(do the stuffs) 
                  ->get();

Или вы можете используйте функцию обратного вызова в with ()

...