PHP OOP - 如果不调用另一个方法则返回结果 $obj->get() 和 $obj->get()->count()
P粉742550377
P粉742550377 2024-04-01 12:28:10
0
1
500

很难准确地解释我想要什么,但我必须尝试......

Laravel Eloquent 启发我编写一个简单的 php 类来使用数据库。

据我们所知,我们可以在 Laravel 中做到这一点:

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

我们也这样做:

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

我们也可以这样做:

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

我们也能做到:

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

我从未尝试过,但我相信它也有效:

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

问题是“它是如何工作的?”

我应该如何编写才能以任何方式返回合适的结果?

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

我需要类似“if - else case for method”的东西,例如:

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

这是我的完整代码:

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

P粉742550377
P粉742550377

全部回复(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来帮助您查看数据库奎里斯。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板