PHP OOP - Kembalikan hasil $obj->get() dan $obj->get()->count() tanpa memanggil kaedah lain
P粉742550377
P粉742550377 2024-04-01 12:28:10
0
1
495

Susah nak terangkan betul-betul apa yang saya nak, tapi saya kena cuba...

Laravel Eloquent memberi inspirasi kepada saya untuk menulis kelas php yang mudah untuk menggunakan pangkalan data.

Setakat yang kami tahu kami boleh melakukan ini dalam Laravel:

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

Kami juga melakukan ini:

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

Kita juga boleh melakukan ini:

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

Kita juga boleh melakukannya:

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

Saya tidak pernah mencubanya, tetapi saya percaya ia juga berkesan:

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

Soalannya ialah "Bagaimana ia berfungsi?"

Bagaimanakah saya harus menulis ini untuk mengembalikan hasil yang sesuai dalam apa jua cara?

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

Saya memerlukan sesuatu seperti "if - else case for method" seperti:

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

Ini kod lengkap saya:

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

P粉742550377
P粉742550377

membalas semua(1)
P粉536532781

Setahu saya, bila dah cuba macam ni

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

Anda mendapat semua pengguna dan pengguna kiraan php/laravel yang bermaksud

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

adalah sama dengan first()

Apabila anda menggunakan kod ini DB::from('users')->count(); anda sebenarnya meminta MySql untuk kiraan dan bukannya mengiranya di bahagian belakang.

Saya sangat mengesyorkan menggunakan pakej ini barryvdh/laravel-debugbar untuk membantu anda melihat pertanyaan pangkalan data.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan