我已经使用 Kohana 几个星期了。我注意到的一件事是 Kohana 缺少急切加载(据我所知)。假设我有以下表格。
科目
id
name
章节
id
subject_id
name
视频
id
chapter_id
name
当用户打开主题页面时,我想显示所有章节和视频。使用 ORM,我可以做到
$tutorials = ORM::factory('subject')->where('id','=', 1)->find();
foreach($tutorials as $tutorial)
{
$chapters = $tutorial->chapters->find_all();
foreach($chapters as $chapter)
{
$videos = $chapter->videos->find_all();
}
}
上面的代码效率不高,因为它进行了太多查询。
我考虑过使用join或database query builder,但它们都没有返回模型对象作为结果。我也研究了with(),但它似乎只适用于一对一的关系。
在 ORM 对象上使用 join 返回一个 OPM 对象,但它不返回连接表中的数据。
我在这里最好的选择是什么?我想最小化查询数,也想得到 ORM 对象的结果。不管是什么,都应该返回教程、章节和视频中的所有列。