相关疑难解决方法(0)

Doctrine2:Polymorphic Queries:搜索子类的属性

我有一个项目,我处理客户订单.其中一些订单是通过Amazon.com进行的.所以我有一个Order实体,以及一个扩展它的AmazonOrder实体.AmazonOrder添加的一件事是AmazonOrderId.

我需要实现广泛的搜索功能.用户可以在文本框中输入一些内容,并在一个大的where子句中用于一堆表达式.因此,例如,如果用户搜索"111",则结果包括ID为111的任何订单,任何以111开头的邮政编码,任何订单运送到"111 Main St"等. .

这些东西是使用查询生成器创建的查询实现的,该查询具有大orX()表达式.

现在,我想匹配所有订单,但如果它们是AmazonOrder,也匹配AmazonOrderId.

而且我被卡住了 - 我怀疑这可能是不可能的

以下是我构建查询的方法:

$qb->select('o,s')->from('PMS\Entity\Order', 'o');    
$qb->leftJoin('o.shippingInfo','s');
$qb->andWhere('o.status = :status');
$qb->setParameter('status',$status);
$qb->andWhere(
    $qb->expr()->orX(
        $qb->expr()->like('o.id',':query')
        $qb->expr()->like('s.address',':query')
        $qb->expr()->like('s.city',':query')
    )
);
$qb->setParameter('query',$userQuery .'%');

$orders = $qb->getQuery()->getResult();
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何添加一个条件,大致上说,"OR(订单是AmazonOrder和AmazonOrderId LIKE'$ userQuery%')"

有人有任何见解吗?要么是处理这个问题的方法,要么是至少确认这样做不可行?

php doctrine-orm

14
推荐指数
1
解决办法
3876
查看次数

在有区别的表格中

如何从一位特定作者中选择所有项目?它可能这样吗?或者如果我想要很多项目类型和项目包(项目包含很多项目),我该如何编辑实体?

项目

/**
 * @ORM\Table()
 * @ORM\Entity
 * @ORM\InheritanceType("JOINED")
 * @ORM\DiscriminatorColumn(name="discr", type="string")
 * @ORM\DiscriminatorMap({
 * "cd"   = "ItemCD",
 * "dvd"   = "ItemDVD",
 * "pack" = "ItemPack",
 * })
 */
class Item
{

    /**
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @ORM\Column(name="name", type="string", length=250, nullable=false)
     */
    private $name;

}
Run Code Online (Sandbox Code Playgroud)

ItemCD

/**
 * @ORM\Table()
 * @ORM\Entity
 */
class ItemCD extends Item
{

    /**
     * @ORM\ManyToOne(targetEntity="Author", inversedBy="item")
     * @ORM\JoinColumn(name="author_id", referencedColumnName="id")
     */
    private $author;

}
Run Code Online (Sandbox Code Playgroud)

ItemDVD

/**
 * …
Run Code Online (Sandbox Code Playgroud)

php doctrine dql doctrine-orm

2
推荐指数
1
解决办法
1494
查看次数

标签 统计

doctrine-orm ×2

php ×2

doctrine ×1

dql ×1