2016-10-12 9 views
0

2つのテーブルから真のクエリを実行することはできません。queryBuilderでinnerJoinを使用してSQLを作成

/** 
* Order 
* 
* @ORM\Table(name="order_work") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\OrderWorkRepository") 
*/ 
class OrderWork 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @ORM\ManyToOne(targetEntity="Client", cascade={"persist"}) 
    * @ORM\JoinColumn(name="client_id", referencedColumnName="id") 
    */ 
    private $client; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="orderNumber", type="string", length=255) 
    */ 
    private $orderNumber; 

とクライアントエンティティID、名前、姓のパラメータがあります?

私は注文の列で、どのように私は可能なクエリクライアントパラメータによる検索を行いたい)

のみ受注作業のためこれは

$queryBuilder = $this->createQueryBuilder('c') 
     ->orWhere('c.orderNumber LIKE :term') 
     ->orWhere('c.device LIKE :term') 
     ->setParameter('term', '%'.$term.'%'); 
+0

私はすでにあなたの質問に行きましたが、それほど明確ではありません。あなたはあなたの質問を編集し、何が必要なのか詳細を記入してください。詳細について質問する方法(http://stackoverflow.com/help/how-to-ask)を参照してください。あなたが更新するまで私はあなたに-1を与えています。また、createQueryBuilderでは、 'c'という別名を指定します。これは 'OrderWork'を表していますか?しかし、 'OrderWork'では' device'という列はありません!だからあなたは本当に何を照会したいですか? –

答えて

2

です。あなたはjoinを使ってクエリを作成する必要があります。これはquerybuilderでは可能ですが、DQLを使用するのが好きです。

public function findOrdersOnClientName($searchTerm) 
{ 
    return $this->getEntityManager()->createQuery(
     'SELECT o, c FROM AppBundle:OrderWork o 
     JOIN o.client c 
     WHERE c.name LIKE :term' 
    )->setParameter('term, '%'. $searchTerm . '%')->getResult(); 
} 
関連する問題