使用'with()'选择列

时间:2014-02-12 14:38:38

标签: php laravel laravel-4 eloquent

这是我的问题:

return $this->mGalleries->with(array('pictures' => function($query){
        $query->wherePublished(1)->orderBy('sort');
    }))->whereInUse(1)->wherePublished(1)->orderBy('date')->get(array('id', 'title'))->toArray();

I have looked at a question here但没有运气。

我尝试过建议:

 $query->select('title')->wherePublished(1)->orderBy('sort');

但是所有的领域都会继续出现,虽然我这样做时首先出现了标题。

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你只想使用返回集的某些列。

我从不在雄辩的模型上使用select,因为滥用可能会破坏模型之间的关系(查找图片需要必要的列I.E. picture_id)。因此,这会使查询的结果产生误导。

为什么不这样使用它?

// $galleries = Galleries->with....
$galleries = Gallery::with(array('pictures' => function($query){
        $query->wherePublished(1)->orderBy('sort');
}))->whereInUse(1)
   ->wherePublished(1)
   ->orderBy('date')
   ->get()
   ->toArray();

然后当你需要例如第一个的标题时: $falleries[0]['title']

如果要隐藏protected $hidden = array('field/attr', ..);函数中的特定属性,可以在您的雄辩模型中添加toArray()属性。