首页 > 解决方案 > Laravel:从模型中加载特定列,其中还包括急切加载的列

问题描述

有没有办法从模态中仅加载特定列,其中还包括急切加载的列我想要这样的东西

UserModel::select('userid', 'locationid', 'username', 'firstname', 'lastname', 'subRoleName.*')
                        ->with('subRoleName')
                        ->get();

但我收到了这个错误Unknown column 'subRoleName' in 'field list'

标签: phplaravel

解决方案


是的,您可以只急切地加载关系中的特定列。从文档

您可能并不总是需要您正在检索的关系中的每一列。因此,Eloquent 允许您指定要检索的关系的哪些列:

$books = App\Book::with('author:id,name')->get();

使用此功能时,您应该始终在要检索的列列表中包含 id 列和任何相关的外键列。

在你的情况下,它会是这样的:

UserModel::select('userid', 'locationid', 'username', 'firstname', 'lastname')
    ->with('subRoleName:id,column2,column3')
    ->get();

但正如文档所说,要小心始终包含 id 和相关的外键,否则它将无法正确加载关系。


推荐阅读