Laravel eloquent 添加自定义查询元素

CMO*_*MOS 4 php mysql orm laravel eloquent

所以我在大小和服务器请求方面遇到了一些问题。所以我试图从雄辩中获得行的缩小版本。例如,这是我的查询调用

$user = User::where('email', '=', 'example@test.com')->first();
Run Code Online (Sandbox Code Playgroud)

这可行,但会返回大量信息。我不需要的东西,关系,可观察值,日期,受保护状态,可填充和每一列。这是预料之中的,所以如果我想获得名字、姓氏和电子邮件。我可以做这样的事情

$users = DB::table('users')->select('firstname','lastname', 'email')->get();
Run Code Online (Sandbox Code Playgroud)

这会起作用,但我不想每次我想这样做时都输入它。我是否可以在 eloquent 或我的模型中设置某个地方,以便我可以做到

$user = User::where('email', '=', 'example@test.com')->min()->first();
Run Code Online (Sandbox Code Playgroud)

只需添加一个名为 min() 的自定义函数,该函数仅获取这三个值。这样的事情可能吗?

The*_*pha 6

是的,如果您在模型中声明一个方法,您就可以做到User这一点,如下所示:

// User.php
public function scopeMin($query)
{
    return $query->select('firstname','lastname', 'email');
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样使用它(仅获取'firstname','lastname', 'email'):

$user = User::where('email', '=', 'example@test.com')->min()->first();
Run Code Online (Sandbox Code Playgroud)

阅读文档中有关查询范围的内容。