1

我正在尝试获取具有嵌套继承并针对某些列进行过滤的表。并且找不到容易做到的事情。

我有桌子店女巫有很多地点(地点有一个城市)和许多行动

我想用 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')););
4

1 回答 1

0

请参阅Laravel Eloquent:如何从连接表中仅获取某些列

最简单的方法是过滤模型中的列(如上面链接的最佳答案所述)。但是,当您想要构建动态查询时,这可能会很不方便。

理论上你应该能够做到:

$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 那样“性感”或时髦,但我发现在处理动态查询时更容易使用。

于 2013-08-26T16:20:34.260 回答