我遵循doctrineation documnetation开始。这里是documentation。主义toarray不转换关系
我的代码是
$User = Doctrine_Core::getTable("User")->find(1);
,当我通过$用户 - > PHONENUMBERS访问的关系,它的工作原理。当我通过使用toArray()方法将User对象转换为数组时,它不会将关系转换为数组。它只是显示$用户数据。
我错过了什么吗?
我遵循doctrineation documnetation开始。这里是documentation。主义toarray不转换关系
我的代码是
$User = Doctrine_Core::getTable("User")->find(1);
,当我通过$用户 - > PHONENUMBERS访问的关系,它的工作原理。当我通过使用toArray()方法将User对象转换为数组时,它不会将关系转换为数组。它只是显示$用户数据。
我错过了什么吗?
通过使用find方法,您只能检索User数据,这就是为什么toArray的返回限制为该数据的原因。您需要指定要加载的附加数据,并且通常在原始查询中执行此操作的最佳位置。从你挂例如,添加选择部分:
$q = Doctrine_Query::create()
->select('u.*, e.*, p.*') // Example only, select what you need, not *
->from('User u')
->leftJoin('u.Email e')
->leftJoin('u.Phonenumbers p')
->where('u.id = ?', 1);
然后toArray'ing从结果时,你应该看到相关的电子邮件和PhoneNumber数据也是如此。
我也注意到这种情况下的异常情况,如果您先调用关系,然后调用ToArray,则会以某种方式包含关系。我的意思是,拿你自己的例如,
$User = Doctrine_Core::getTable("User")->find(1);
$num= $User->Phonenumbers->office; // assumed a field 'office' in your phone num table
$userArray = $user->toArray(true);
在上面的情况下,$ userArray莫名其妙包含整个关系。如果我们删除$ num赋值,它不会。
我猜这是由于原则只是首先获取一条记录,并且只有当您尝试访问获取其他相关表的外键值时