doctrine-orm - Doctrine DiscriminatorMap 子句 Where
问题描述
我需要使用 DiscriminatorMap 类型的实体中的学说执行查询,其中我的条件在继承类中
命令
<?php
namespace App\Domain;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="OrderRepository")
* @ORM\Table(name="orders")
* @ORM\HasLifecycleCallbacks()
*/
class Order
{
/**
* @ORM\OneToOne(targetEntity="Customer", mappedBy="orders", cascade={"persist"})
* @ORM\JoinColumn(name="fk_cliente", referencedColumnName="id_cliente")
* @JMS\Groups ({"list", "details"})
* @var Customer
*/
private $customer;
/**
* @return Person|Company
*/
public function getCustomer(): Customer
{
return $this->customer;
}
....
顾客
<?php
namespace App\Domain;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass="CustomerRepository")
* @ORM\HasLifecycleCallbacks()
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="tipo", type="string")
* @ORM\DiscriminatorMap({"customer" = "Customer", "F" = "Person", "J" = "Company"})
* @ORM\Table(name="clientes")
*/
class Customer
{
use TimestampableTrait;
....
预计
$query = $qb->select('p')
->from(\App\Domain\Order::class, 'p')
->leftJoin('p.customer', 'c')
->setMaxResults((int)$params['limit'])
->setFirstResult((int)$params['offset']);
$query->andWhere($qb->expr()->isNotNull('c.document'));
我需要返回客户是个人或公司类型的所有销售,文档不为空
解决方案
推荐阅读
- android - 在视图模型中使用 LiveData 的结果从 firebase 获取数据
- php - 通过返回重定向传递数据返回更新请求
- graph - Graphviz 复合结构图
- xaml - XAML 中的类属性声明
- python - io.BufferedReader 是否真的支持 readline?
- c++ - 初始化值是否保证通过它们自己的地址来反映,而不管内存顺序如何
- python - 在 C++Builder 应用程序中嵌入 Python
- heroku - heroku推送安装错误
- javascript - javascript中对象原型的比较
- javascript - 如何取消 Highcharts 传奇的标题?