我无法从2个表中进行真正的查询。
/**
* 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,name,surname参数:
我想通过订单列进行搜索,并通过客户端参数来查询我的查询方式?)
仅对订单有效:
$queryBuilder = $this->createQueryBuilder('c')
->orWhere('c.orderNumber LIKE :term')
->orWhere('c.device LIKE :term')
->setParameter('term', '%'.$term.'%');
答案 0 :(得分:1)
你必须使用连接进行查询,这可以使用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();
}