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

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

Linda Hamilton
发布: 2024-12-16 00:41:16
原创
924 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板