所以我在大小和服务器请求方面遇到了一些麻烦。所以我试图从雄辩中获得一行的缩小版本。例如,这里是我的查询电话
$user = User::where('email', '=', 'example@test.com')->first();
这有效但返回了大量信息。我不需要的东西,关系,可观察性,日期,保护状态,可填写和每一列。这是预期的如果我想获得姓名和电子邮件。我可以做这样的事情
$users = DB::table('users')->select('firstname','lastname', 'email')->get();
这会有效,除了我不想每次都打算这样做。我是否有可能在雄辩或我的模型中设置某个地方,以便我能够做到
$user = User::where('email', '=', 'example@test.com')->min()->first();
只需添加一个名为min()的自定义函数,它只能抓取这三个值。这样的事情可能吗?
答案 0 :(得分:3)
是的,如果您在User
模型中声明一个方法,就可以这样做:
// User.php
public function scopeMin($query)
{
return $query->select('firstname','lastname', 'email');
}
然后您可以像这样使用它(仅获取'firstname','lastname', 'email'
):
$user = User::where('email', '=', 'example@test.com')->min()->first();
阅读文档中的Query Scope。
答案 1 :(得分:2)
您可以通过在first()方法中传递数组来限制列。
$user = User::where('email', '=', 'example@test.com')->first(['firstname','lastname', 'email']);
答案 2 :(得分:0)
您可以在模型中插入$ hidden数组,其中包含您不希望出现的列。