Doctrine 托雷主义不能改变关系
我按照条令文件开始。这是你的电话号码 我的代码是Doctrine 托雷主义不能改变关系,doctrine,database-relations,toarray,Doctrine,Database Relations,Toarray,我按照条令文件开始。这是你的电话号码 我的代码是 $User = Doctrine_Core::getTable("User")->find(1); 当我通过$User->Phonenumbers访问关系时,它就起作用了。当我使用toArray()方法将用户对象转换为数组时,它不会将关系转换为数组。它只显示$User数据 我遗漏了什么吗?通过使用find方法,您只检索了用户数据,这就是toArray的返回仅限于该数据的原因。您需要指定要加载的其他数据,而执行此操作的最佳位置通常是在原始查
$User = Doctrine_Core::getTable("User")->find(1);
当我通过$User->Phonenumbers访问关系时,它就起作用了。当我使用toArray()方法将用户对象转换为数组时,它不会将关系转换为数组。它只显示$User数据
我遗漏了什么吗?通过使用find方法,您只检索了用户数据,这就是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,则关系会以某种方式被包括在内。我的意思是,拿你自己的eg
$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分配,它不会
我猜这是因为条令只首先获取一条记录,而只有当您尝试访问外键值时,它才会获取其他相关表