Rumah  >  Soal Jawab  >  teks badan

PHP OOP - Kembalikan hasil $obj->get() dan $obj->get()->count() tanpa memanggil kaedah lain

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粉742550377P粉742550377182 hari yang lalu417

membalas semua(1)saya akan balas

  • P粉536532781

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

    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.

    balas
    0
  • Batalbalas