我正在尝试使用嵌套继承获取表并过滤某些列。并且找不到容易做到的事。
我有桌面店女巫有很多地方(位置有一个城市)和许多行动
我希望使用Eloquent一次性获取所有内容并过滤特定列。
这是我如何过滤商店表但不知道如何过滤表位置和操作。
$this->shop->with('locations')->with('actions')->get(array('id','name','recommended','category_id'));
我需要这样的东西:
$this->shop
->with('locations',Location::with('city', City::get(array('id','name')))->get(array('id','name')))
->with('actions', Action::get(array('id','name')))->get(array('id','name')););
答案 0 :(得分:0)
请参阅Laravel Eloquent: How to get only certain columns from joined tables
最简单的方法是过滤模型中的列(如上面链接的顶部答案中所述)。但是,当您想要构建动态查询时,这可能会很不方便。
理论上你应该可以这样做:
$this->shop->with(array('locations' => function($query) {
$query->select('id', '...etc...');
}
...遗憾的是它似乎不适用于select();当我测试它时,我得到一个空白数组。然而,其他方法确实有效,例如
$this->shop->with(array('locations' => function($query) {
$query->orderBy('id', 'DESC');
}
使用Fluent Query Builder可能会更好。它不像ORM那样“性感”或时髦,但我发现在处理动态查询时更容易使用。