首页 >后端开发 >php教程 >如何在 Laravel 雄辩的 `with()` 函数中选择特定列?

如何在 Laravel 雄辩的 `with()` 函数中选择特定列?

Linda Hamilton
Linda Hamilton原创
2024-12-16 00:41:16925浏览

How to Select Specific Columns in Laravel's Eloquent `with()` Function?

在 Eloquent 的“With()”函数中指定特定列

利用 Laravel 的 Eloquent ORM 中的“with()”函数从多个表中获取相关数据时,您可能会遇到只需要第二个表中的特定列的情况。本文深入探讨了如何在不借助查询生成器的情况下实现此目的。

考虑这样的场景:您有两个表“User”和“Post”,它们之间具有一对多关系。在您的 User 模型中,您定义与 Post 模型的“hasMany”关系:

public function post()
{
    return $this->hasmany('post');
}

同样,在 Post 模型中,您与 User 模型建立“belongsTo”关系:

public function user()
{
    return $this->belongsTo('user');
}

但是,当您使用“with()”函数连接这两个表时,您可能会注意到它默认选择第二个表中的所有列。假设您只想从“User”表中检索特定列,例如“id”和“username”。以下代码片段还不够:

Post::query()
    ->with('user')
    ->get();

要实现您的目标,您可以传递一个闭包函数作为传递给“with()”函数的数组的第二个索引:

Post::query()
    ->with(['user' => function ($query) {
        $query->select('id', 'username');
    }])
    ->get()

此闭包允许您指定从第二个表中检索哪些列。在这种情况下,它只会从“User”表中选择“id”和“username”列。

注意:正如答案中提到的,主键(“id” " 在这种情况下)必须是 $query->select() 方法中的第一个参数,以确保正确的结果检索。

以上是如何在 Laravel 雄辩的 `with()` 函数中选择特定列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn