0

私はエンティティの次の部分を構築しました:

/**
* @var Application_Model_Ticket
* 
* @OneToMany(targetEntity="Application_Model_Ticket",mappedBy="contacts_id")
* @JoinColumn(name="id", referencedColumnName="contacts_id")
*/
private $tickets;    
public function getTickets() {
    return $this->tickets; 
} 


/**
* @var Application_Model_Contact
*
* @ManyToOne(targetEntity="Application_Model_Contact",cascade={"persist"})
* @JoinColumn(name="contacts_id", referencedColumnName="id")
*/
private $contact;
public function getContact() {
     return $this->contact; 
} 

次の Doctrine Code を試してみると:

$this->oQueryBuilder->select('contact','ticket')
                    ->from('Application_Model_Contact', 'contact')
                    ->leftJoin('contact.tickets', 'ticket')
                    ->orderBy('contact.id', 'DESC');

MYSQL エラーが発生します。次のことが起こります。

FROM contact c0_ LEFT JOIN  ORDER BY c0_.id DESC

Doctrine が LEFT JOIN を適切に埋めていないようです。なぜこれが起こるのですか?

アップデート:

->leftJoin('contact.tickets', 'ticket', 'WITH','contact.id = ticket.contactsId')

私に与えます

LEFT JOIN  AND (c0_.id = t1_.contacts_id) 
4

2 に答える 2

0

これを試して:

$this->oQueryBuilder->select('contact','ticket')
                    ->from('Application_Model_Contact', 'contact')
                    ->leftJoin('contact.tickets', 'ticket', 'WITH', 'contact.id = ticket.contacts_id')
                    ->orderBy('contact.id', 'DESC');
于 2013-02-18T15:20:00.943 に答える
0

あなたONはあなたのクエリで

$this->oQueryBuilder
     ->select('contact','ticket')
     ->from('Application_Model_Contact', 'contact')
     ->leftJoin('contact', 'on contact.ticket=Application_Model_Contact.field')
     ->orderBy('contact.id', 'DESC');

一致フィールドにApplication_Model_Contact.field置き換えて適用しますJOIN

したがって、クエリは次のようになります。

....FROM contact c0_ LEFT JOIN ON table1.field=table2.field ORDER BY c0_.id DESC

ソース: http://oldforum.symfony-project.org/index.php/m/69061/

Mysql 参加: http://dev.mysql.com/doc/refman/5.0/en/join.html

于 2013-02-18T15:12:59.833 に答える