2017-05-31 2 views
1
$users = User:all(); 
//User:all() is based on the laravel eloquent model , it's just similar to 'select * from user' query 

$total_spend_amount = 0; 

    foreach($users as $user) 
    { 
     $total_spend_amount += $user->spend_amount; 
    } 

    echo "Total spend amount :".$total_spend_amount; 

//Note: In this simple example i just want to sum of all the spend_amount 

ci-dessus sont juste un exemple simple, comment puis-je faire un algorithme sur la requête sans résultat en boucle/foreach en php? Mais que se passe-t-il si je veux que l'algorithme spécifique soit exécuté sur la requête résultante au lieu de somme?Comment puis-je effectuer une opération sur le résultat de la requête pour résultat mysql sans boucle/foreach

+0

voulez-vous juste la somme de spend_amount? –

+0

@GauravGupta pas seulement la somme, si possible, je veux la coutume. –

+0

Je ne sais pas Laravel d'une barre de savon, mais ne voulez-vous pas appliquer un gestionnaire 'réduire 'à votre collection? https://laravel.com/docs/5.4/collections#method-reduce –

Répondre

3

Je ne suis pas sûr de la syntaxe mais essayez avec

User::all()->sum('spend_amount'); 

ou

User::all()->select(DB::raw("SUM(spend_amount)")->get(); 
+0

C'est exactement ça. – Ohgodwhy

+0

Je sais que Laravel peut le faire, comme je le dis à la question ci-dessus, la somme est juste un exemple, que diriez-vous que je veux que l'algorithme personnalisé soit effectué au lieu de la somme? –

+0

Est-ce que ma réponse est exacte? – sensorario

4

Laravel fournit sum() par défaut à l'aide éloquente.

$total_spent_amount = DB::table('users')->all()->sum('spent_amount`); 
+0

Je sais que Laravel peut le faire, comme je l'ai dit à la question ci-dessus, la somme est juste un exemple, que diriez-vous de faire un algorithme personnalisé au lieu de la somme? –

+0

Vous pouvez définir une fonction d'assistance personnalisée dans Laravel. Jetez un oeil à ce https://stackoverflow.com/questions/28290332/best-practices-for-custom-helpers-on-laravel-5. Donc, chaque fois que vous pensez avoir besoin d'utiliser votre fonction ou votre algorithme, appelez-le. –