Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 15.04.2019 10:59:37

Помогите составить запрос на Laravel Query Builder

Добрый день уважаемые.

Всю голову сломал, не могу составить нижеуказанный запрос на Laravel Query Builder.

Помогите пожалуйста.


SELECT products.title, products.price, x.sales  
 
FROM products 
			  
			INNER JOIN 
					  (
						SELECT product_id, 
						
						MAX(sales) AS sales 
						
						FROM offers 
						
							GROUP BY product_id 
						
					  ) x
					  
			ON x.product_id = products.id 
					  
			  
ORDER BY x.sales DESC LIMIT 20   

Не в сети

#2 15.04.2019 14:28:12

Re: Помогите составить запрос на Laravel Query Builder

смотри в сторону

—>whereHas( ’offersRealtionName’, function( $query )
{
return $query->
})

Не в сети

#3 15.04.2019 20:26:45

Re: Помогите составить запрос на Laravel Query Builder

Пробовал так :

$populars = DB::table ('products')

    ->select( DB::table ('offers')

                  ->join ('offers.product_id', '=', 'products.id')
                  ->select ('product_id')
                  ->max ('sales')
                  ->groupBy ('offers.product_id')
                  ->get()
            )

    ->orderBy ('offers.sales', 'desc')
    ->take(20)
    ->get();

return $populars;

но выдаёт ошибку :

SQLSTATE[42000]: Syntax error or access violation: 1049 Unknown database 'offers' (SQL: select max(`sales`) as aggregate from `offers` inner join `offers`.`product_id` on `=` = `products`.`id`)

за ответ спасибо, но непонятно где и к чему прицеплять данное замыкание ? )

ниже рабочий пример, он выполняет требуемую задачу, но это всё равно (почти) чистый SQL, а надо использовать, именно КОНСТРУКТОР ЗАПРОСОВ ФРЭЙМВОРКА

$results = DB::select ( DB::raw ( "SELECT products.title, products.price, x.sales  
 
FROM products 
        
      INNER JOIN 
            (
            SELECT product_id, 
            
            MAX(sales) AS sales 
            
            FROM offers 
            
              GROUP BY product_id 
            
            ) x
            
      ON x.product_id = products.id 
            
        
ORDER BY x.sales DESC LIMIT 20" ) );

Изменено laravel_junior (15.04.2019 20:36:44)

Не в сети

#4 16.04.2019 14:37:17

Re: Помогите составить запрос на Laravel Query Builder

Eloquent использовать какая-такая религия не позволяет?
Что за способ пользоваться фреймфорком не используя его фишки?
Создай модели, миграции и сделай как у белых людей!
Глядишь всё заработает.

Не в сети

#5 16.04.2019 14:38:09

Re: Помогите составить запрос на Laravel Query Builder

Всё равно что сел на велик, но пед этим сиденье открутил, ибо Ж тогда не будет елозить.
Тогда смело на Joomla/Drupal переходи.

Не в сети

#6 17.04.2019 09:28:56

Re: Помогите составить запрос на Laravel Query Builder

'populars' => Product::join ('offers', 'products.id', '=', 'offers.product_id')
        ->orderBy ('offers.sales', 'desc')
        ->unique ('title')
        ->take (20)
        ->get()

Коллекции, решают данную задачу.

А тебе видимо проще написать 20 строк говна, переходящего на личности, чем написать несколько строк кода !?.

Типичный подход выскочки-дилетанта ).

PROFESSION DE FUFLO.

Не в сети

Подвал раздела