现在,如果我尝试在phpactiverecord中加载两个以上的对象,我会收到错误。
是这样的:
$conditions['include'] = array( 'playlists' => array('playlist_songs' =>array('song')));
User::find('first', $conditions);
尝试检索只有一个级别太多了?
每当我尝试使用3级深度关联时,我收到错误Undefined offset: 0
。
感谢您的帮助或见解:D。
编辑:
所以我发现了一个有点奇怪的模式。
如果我有array('playlist_songs'=>array('song'=>array('album')));
,那么急切的负荷就会让我失望。但是,如果我向数组添加另一个关联,那么它可以正常工作。
array('playlist_songs'=>array('song','song','song','song'=>array('album')));
我在该阵列中多次使用'song'只是为了使修复非常明显。
答案 0 :(得分:1)
这应该有效。我刚刚测试了一个我自己代码的例子:
$model = MyItem::find('first',array('include' => array('Group' => array('SomeGroupFeature'))));
我能想到的唯一一件事就是你在其中一件事上没有任何结果,或者你的条件中包含了之前使用过数组的其他内容?
答案 1 :(得分:1)
通过更改execute_eager_load中Table.php的第247行来解决这个问题
if (is_array($name))
{
$nested_includes = count($name) > 1 ? $name : $name[0];//<-- this line
$name = $index;
}
到
if (is_array($name))
{
$nested_includes = count($name) > 0 ? $name : $name[0];
$name = $index;
}