Laravel brut db Ma requête comme ceci:Comment puis-je ajouter une condition dans la larve db raw?
public function getTopProduct($price = null) {
$products = DB::select(DB::raw('SELECT *
FROM (
SELECT a.*, b.name AS store_name, b.address
FROM products a
JOIN stores b ON b.id = a.store_id
WHERE a.status = 1
) AS product
GROUP BY store_id')
);
return $products;
}
Je veux ajouter la condition
Si le prix est pas nul, il ajoutera le prix de condition sur la where
Par exemple, le prix = 1000 , la requête sur la where
comme ceci:
WHERE a.status = 1 AND a.price < 1000
Si le prix = null, la condition non exécuté
Comment puis-je le faire?
Mise à jour
je change légèrement mon flux de code
J'essaie comme ceci:
public function getTopProduct($price)
{
if($price == 1)
$price_condition = 'WHERE price > 1000';
else if($price == 2)
$price_condition = 'WHERE price >= 500 AND a.price <= 1000';
else if($price == 3)
$price_condition = 'WHERE price < 500';
else
$price_condition = '';
$products = DB::select('SELECT *
FROM (
SELECT a.*, b.name AS store_name, b.address
FROM products a
JOIN stores b ON b.id = a.store_id
WHERE a.status = 1
) AS product
GROUP BY store_id
'.$price_condition
);
return $products;
}
Et ça marche
Comment pensez-vous?
Que ma solution soit correcte? Ou vous avez une meilleure solution?
Prenez une variable avec 'prix $ = array_column ($ request-> get ('prix'));' et 'faire -> when' requête avec la condition 'where'! Il s'exécute quand le prix est en demande! –