Maison  >  Questions et réponses  >  le corps du texte

PHP OOP - Renvoie le résultat de $obj->get() et $obj->get()->count() sans appeler une autre méthode

C’est difficile d’expliquer exactement ce que je veux, mais je dois essayer…

Laravel Eloquent m'a inspiré pour écrire une classe php simple pour utiliser la base de données.

Pour autant que nous sachions, nous pouvons faire cela dans Laravel :

$run = DB::table('users')->where('id', 3)->where('level', 2)->get();

Nous faisons cela aussi :

$run = DB::table('users')->where('id', 3)->where('level', 2)->get()->count();

Nous pouvons aussi faire ceci :

$run = DB::table('users')->where('id', 3)->where('level', 2)->get()->first();

Nous pouvons le faire aussi :

$run = DB::table('users')->where('id', 3)->where('level', 2)->get()->pluck('id')->toArray();

Je ne l'ai jamais essayé, mais je crois que ça marche aussi :

$run = DB::table('users')->where('id', 3)->where('level', 2)->get()->pluck('id')->toArray()->first();

La question est "Comment ça marche ?"

Comment dois-je écrire ceci pour renvoyer des résultats appropriés de quelque manière que ce soit ?

// It was easy to write my code to return total results if I write like that
$run = DB::from('users')->where('id', 3)->where('level', 2)->get()->count();

// Or to return first result if I write like that
$run = DB::from('users')->where('id', 3)->where('level', 2)->get()->first();

// But what sould I do to return all the results if write like that (As eloquent works).
$run = DB::from('users')->where('id', 3)->where('level', 2)->get();

J'ai besoin de quelque chose comme "si - sinon, cas pour la méthode" comme :

function __construct() {
   if(if aint`t no calling any methods except **get()** ){
      // Lets return default method
      return $this->results();
   }
   else{
      // Do whatever...
   }
}

Voici mon code complet :

https://github.com/amirandev/PHP-OOP-DB-CLASS/blob/main/db.php

P粉742550377P粉742550377182 Il y a quelques jours418

répondre à tous(1)je répondrai

  • P粉536532781

    P粉5365327812024-04-02 09:51:57

    Pour autant que je sache, quand vous essayez quelque chose comme ça

    $run = DB::from('users')->get()->count();

    Vous obtenez tous les utilisateurs et le nombre d'utilisateurs php/laravel, ce qui signifie

    $users = DB::from('users')->get(); // get all users
    $usersConut = $users->count();  //count them away of database/mysql

    est la même chose que first()

    Lorsque vous utilisez ce code DB::from('users')->count();, vous demandez en fait les décomptes à MySql plutôt que de les compter sur le backend.

    Je recommande fortement d'utiliser ce packagebarryvdh/laravel-debugbar pour vous aider à visualiser les requêtes de base de données.

    répondre
    0
  • Annulerrépondre