是否有办法在laravel中进行预先加载时只选择某些列?
$columns = ['col_1', 'col_2', 'col_3'];
$model = MyModel::findOrFail(Input::get('id'), $columns);
$model->load('position');
在我的模型中,我定义了:
public function position() {
return $this->belongsToMany('Position', 'mymodel_positions')->withTimestamps();
}
当我没有提供像MyModel :: findOrFail(id)这样的$ columns参数时。职位是 正确加载。但是,如果我提供$ columns,则位置总是空的。
我想要什么:急切地加载关系并指定列(不是加载关系中的列)。我确定这是可能的,但我根本就没有得到它......
希望得到你的帮助。
答案 0 :(得分:2)
<强> tldr;您始终需要SELECT
主键和关系的相应外键。
最有可能的是:
$columns = ['col_1', 'col_2', 'col_3'];
不包含模型的主键,因此Eloquent无法匹配相关模型。
话虽如此,你所需要的只是:
$columns = ['id', 'col_1', 'col_2', 'col_3'];
或任何字段是主键。