2015-06-20 43 views
0

编辑:改变findOneBy找到BY 在symfony我使用的是FOS-UserBundle。我有三张桌子。我怎样才能查看数据库从树枝学说

fos_user 客户 customer_user

这是customerUser.orm.xml

<?xml version="1.0" encoding="utf-8"?> 
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd"> 
    <entity name="FPM\AppBundle\Entity\CustomerUser" table="customer_user"> 
    <indexes> 
     <index name="customer_user_customer_fk1_idx" columns="id_customer"/> 
     <index name="customer_user_user_fk2_idx" columns="id_user"/> 
    </indexes> 
    <id name="id" type="integer" column="id"> 
     <generator strategy="IDENTITY"/> 
    </id> 
    <many-to-one field="idUser" target-entity="User"> 
     <join-columns> 
     <join-column name="id_user" referenced-column-name="id"/> 
     </join-columns> 
    </many-to-one> 
    <many-to-one field="idCustomer" target-entity="Customer"> 
     <join-columns> 
     <join-column name="id_customer" referenced-column-name="id"/> 
     </join-columns> 
    </many-to-one> 
    </entity> 
</doctrine-mapping> 

这是ActionController的

/** 
* @Route("/companydata", name="fpm_companydata") 
*/ 
public function companyDataAction(request $request) 
{ 
    $user = $this->get('security.token_storage')->getToken()->getUser(); 
    $userId = $user->getId(); 

    $customerUser = $this->getDoctrine() 
     ->getRepository('FPMAppBundle:CustomerUser') 
     ->findBy(
      array("idUser" => $userId) 
     ); 

    return $this->render("FPMAllgemeinBundle:Start:companydata.html.twig", 
     array(
      "customerUser" => $customerUser 
     ) 
    ); 
} 

当我在树枝倾倒,我有结果如下:

array:2 [▼ 
0 => CustomerUser {#1055 ▼ 
-id: 1 
-idUser: User {#946 ▶} 
-idCustomer: Customer {#1082 ▼ 
+__isInitialized__: false 
-firstname: null 
-surename: null 
-companyname: null 
-street: null 
-zipcode: null 
-city: null 
-phone: null 
-homepage: null 
-email: null 
-verified: null 
-id: 1 
-idCountry: null 
…2 
} 
} 
1 => CustomerUser {#1081 ▼ 
-id: 2 
-idUser: User {#946 ▼ 
#id: 1 
#username: "rol4nd" 
#usernameCanonical: "rol4nd" 
#email: "[email protected]" 
#emailCanonical: "[email protected]" 
#enabled: true 
#salt: "cgadwc4up9484okkc8wc" 
#password: "xnkOiX1kD/akMxkXLl9U2OYPyeKlvgQfN79GytQ==" 
#plainPassword: null 
#lastLogin: DateTime {#944 ▶} 
#confirmationToken: null 
#passwordRequestedAt: null 
#groups: null 
#locked: false 
#expired: false 
#expiresAt: null 
#roles: [] 
#credentialsExpired: false 
#credentialsExpireAt: null 
} 
-idCustomer: Customer {#1080 ▼ 
+__isInitialized__: false 
-firstname: null 
-surename: null 
-companyname: null 
-street: null 
-zipcode: null 
-city: null 
-phone: null 
-homepage: null 
-email: null 
-verified: null 
-id: 2 
-idCountry: null 
…2 
} 
} 
] 

当我在customertable只有一个结果,我可以查看例如,名字以

{{ idCustomer.surename }} 

但是,当有更多北京时间然后一个结果匹配,我得到了上面的转储,我不能在foreach查看。

我的错误在哪里?

+2

是不是idUser应该是唯一的?因为findOneBy应该总是返回一个结果。 –

+0

你是如何循环浏览结果的?你有尝试过这样的吗? {%为idcustomer%的客户} {{customer.surename}} { %ENDFOR%} –

+0

我得到这个错误:变速 “idCustomer” 不存在FPMAllgemeinBundle:开始:companydata.html.twig在第11 –

回答

2

首先,在你的控制器findBy()总是会返回一个数组,因此,如果您更换customerUsercustomerUsers你的代码会更清楚:

$customerUsers = $this->getDoctrine() 
    ->getRepository('FPMAppBundle:CustomerUser') 
    ->findBy(
     array("idUser" => $userId) 
    ); 

return $this->render("FPMAllgemeinBundle:Start:companydata.html.twig", 
    array(
     "customerUsers" => $customerUsers 
    ) 
); 

然后在你的树枝,你可以显示客户详细信息customerUsers每个像这样:

{% for customerUser in customerUsers %} 
    Name: {{ customerUser.idCustomer.firstname }} {{ customerUser.idCustomer.surename }} 
    Company: {{ customerUser.idCustomer.companyname }} 
{% endfor %}