2014-05-25 2 views
1

Je suis en train de briser une requête Eloquent comme celui-ciComment scinder une requête modèle Eloquent

$query = new Product; 

if (!empty($req->query['id'])) { 
    $query->where('id', '=', '1'); 
} 

$products = $query->get(); 

Le résultat me donne au-dessus de tous les produits dans la base de données. Cependant, cela fonctionne effectivement.

$products = Product::where('id', '=', '1')->get(); 

Existe-t-il un moyen de le faire?

Répondre

1

En Laravel 4 vous devez ajouter vos paramètres de requête à votre variable de requête. Dans Laravel 3, cela fonctionnerait comme vous le faites.

Voici ce que vous devez faire (je ne suis pas sûr si cela va fonctionner avec new Product Tho):

$query = new Product; 

if (!empty($req->query['id'])) { 
    $query = $query->where('id', '=', '1'); 
} 

$products = $query->get(); 
0

Votre code n'a aucun sens. Si vous faites un new Product - alors il n'aura jamais un ID associé - alors votre if (!empty($req->query['id'])) sera toujours faux.

Essayez-vous simplement d'avoir une idée de produit spécifique?

$products = Product::find(1); 

est le même que

$products = Product::where('id', '=', '1')->get();