PHP OOP – Ergebnis von $obj->get() und $obj->get()->count() zurückgeben, ohne eine andere Methode aufzurufen
P粉742550377
P粉742550377 2024-04-01 12:28:10
0
1
408

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粉742550377
P粉742550377

Antworte allen(1)
P粉536532781

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

$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来帮助您查看数据库奎里斯。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!