Laravel 4 如何在快速加载时仅拾取某些列

Laravel 4 如何在快速加载时仅拾取某些列,laravel-4,Laravel 4,在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', 'mym

在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,那么位置总是空的

我想要的是:急切地加载关系并指定列(而不是加载关系中的列)。我相信这是可能的,但我就是不明白


希望你的帮助。

tldr;您总是需要
选择关系的
主键和对应的外键。

很可能是:

$columns = ['col_1', 'col_2', 'col_3'];
不包含模型的主键,因此Eloquent无法匹配相关模型

话虽如此,您所需要的只是:

$columns = ['id', 'col_1', 'col_2', 'col_3'];

或者任何字段都是主键。

我不这么认为。链接中的问题是关于在急切加载的模型中指定列。我想我的问题不一样。我已经看过你提到的那个问题了。我的问题是指定列并额外加载模型。为什么不按需要格式化模型?