0
我有3个表:Kohana的3.2 ORM find_all()与关系
artists{id,name}
media{id,name,filename}
media_artists{artist_id,media_id}
我创建了N-N关系模型作为Kohana的指南中所述。
当我在控制器:
$artist_view = new View('artists/profile');
$artist_id = $this->request->param('id');
$artist_view->artists = $artist_model->where('id', '=', $artist_id)->find();
$artist_view->media = $artist_model->media->find_all();
它工作得很好,我可以叫我的看法与此相关的特定艺术家的媒体条目。
现在我想要做一个查询,让我把所有的艺术家和他们的相关媒体都放在同一个sql结果中,但是我找不到语法。 此:
$artist_view->artists = $artist_model->order_by('name' , 'ASC')->find_all();
$artist_view->media = $artist_model->media->find_all();
不工作(不抛出一个错误,但$ artist_view->媒体为空)
我已经看到了一些论坛这样的事情可能工作:
$artist_model->order_by('name' , 'ASC')->with('media')->find_all();
但它不适用于我。
在我看来,到了最后,我希望能够做一些事情是这样的:如果你在定义两个模型的relationhsip
foreach($artists as $a){
echo $a->name."<br />";
foreach($a->media as $m) echo $m->name."<br />";
echo "<br />";
}
这就是我在我的模型中...我在文档中阅读它,所以我已经这样...我不明白为什么它不工作... – Piero
奇怪的是,它适用于当我使用 - >查找()在一个艺术家,但没有与find_all()... – Piero
嗯,但有一刻我错过了什么(见编辑):$ artist-> media-> find_all()必须使用。你在你的SQL方案中创建了关系(使用外键等,当你使用MySQL时)? –