我在项目中使用Symfony2和Doctrine。我想从数据库中获取一些数据。所以我在控制器中创建了简单的代码
$repository = $this->getDoctrine()
->getRepository('AppBundle:TransactionDefined');
$defined = $repository->findOneBy(
array(
'description' => $transaction->getDescription(),
'recipient' => $transaction->getRecipient(),
'accountNumber' => $transaction->getAccountNumber(),
'title' => $transaction->getClearTitle()
)
);
在我看来,我应该得到TransactionDefined对象
但我得到了奇怪数据的大对象。我的代码出了什么问题?
object(AppBundle\Entity\TransactionDefined)#645 (6) {
["category":protected]=>
object(Proxies\__CG__\AppBundle\Entity\TransactionCategory)#656 (6) {
["__initializer__"]=>
object(Closure)#648 (3) {
["static"]=>
array(2) {
["entityPersister"]=>
object(Doctrine\ORM\Persisters\BasicEntityPersister)#646 (14) {
["class":protected]=>
object(Doctrine\ORM\Mapping\ClassMetadata)#596 (37) {
["name"]=>
string(36) "AppBundle\Entity\TransactionCategory"
["namespace"]=>
string(16) "AppBundle\Entity"
["rootEntityName"]=>
string(36) "AppBundle\Entity\TransactionCategory"
["customGeneratorDefinition"]=>
NULL
["customRepositoryClassName"]=>
NULL
["isMappedSuperclass"]=>
bool(false)
["parentClasses"]=>
array(0) {
}
["subClasses"]=>
array(0) {
}
["namedQueries"]=>
array(0) {
}
["namedNativeQueries"]=>
array(0) {
}
["sqlResultSetMappings"]=>
array(0) {
}
...
我只粘贴这个对象的部分,因为它非常巨大
答案 0 :(得分:1)
您的代码似乎没有错。该对象只是Doctrine用于延迟加载真实实体对象的代理对象。
http://doctrine-orm.readthedocs.org/en/latest/reference/advanced-configuration.html#proxy-objects
答案 1 :(得分:0)
尝试使用Doctrine\Common\Util\Debug::dump($defined)
而不是var_dump。 Debug::dump()
只会获取实体字段,并允许您控制您希望跟踪实体关系的深度(默认为2级)。如果你有任何双向关系,var_dump也会导致致命错误,因为它会在相关实体之间来回传递。