suchen

Heim  >  Fragen und Antworten  >  Hauptteil

PHP OOP – Ergebnis von $obj->get() und $obj->get()->count() zurückgeben, ohne eine andere Methode aufzurufen

Es ist schwer genau zu erklären, was ich will, aber ich muss es versuchen...

Laravel Eloquent hat mich dazu inspiriert, eine einfache PHP-Klasse zur Nutzung der Datenbank zu schreiben.

Soweit wir wissen, können wir dies in Laravel tun:

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

Das machen wir auch:

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

Das können wir auch machen:

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

Wir schaffen das auch:

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

Ich habe es noch nie ausprobiert, aber ich glaube, dass es auch funktioniert:

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

Die Frage ist „Wie funktioniert es?“

Wie soll ich das schreiben, um in irgendeiner Weise angemessene Ergebnisse zu liefern?

// 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();

Ich brauche so etwas wie „Wenn – sonst Fall für Methode“ wie:

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

Das ist mein vollständiger Code:

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

P粉742550377P粉742550377231 Tage vor486

Antworte allen(1)Ich werde antworten

  • P粉536532781

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

    据我所知,当你尝试类似的事情时

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

    您获得所有用户和 php/laravel 计数用户,这意味着

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

    first() 相同

    当您使用此代码 DB::from('users')->count(); 时,您实际上是在向 MySql 询问计数,而不是在后端对它们进行计数。

    我强烈建议使用这个包barryvdh/laravel-debugbar来帮助您查看数据库奎里斯。

    Antwort
    0
  • StornierenAntwort