php原则2:继承Map与父表连接

j13ufse2  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(255)

我有一个这样的基表:

class BaseProduct 
{
    /**
     * @ORM\ManyToOne(targetEntity="ProductBundle\Entity\Category", inversedBy="baseProducts")
     * @ORM\JoinColumn(name="menu_category_id", referencedColumnName="id", nullable=true)
   **/
    protected $category;
// ...

以及从baseproduct继承的另一个实体

class ChildProduct extends BaseProduct
{

    /**
     * @ORM\ManyToOne(targetEntity="ProductBundle\Entity\Category", inversedBy="childProducts")
     * @ORM\JoinColumn(name="menu_category_id", referencedColumnName="id", nullable=true)
   **/
    protected $category;

和类别实体:

class Category 
{
    /**
     * @ORM\OneToMany(targetEntity="ProductBundle\Entity\BaseProduct", mappedBy="category")
     * @ORM\OrderBy({"position"= "ASC"})
     */
    private $baseProducts;

    /**
     * @ORM\OneToMany(targetEntity="ProductBundle\Entity\ChildProduct", mappedBy="category")
     * @ORM\OrderBy({"position"= "ASC"})
     */
    private $childProducts;

我的 ChildProduct 表有一列名为 id 并引用 BaseProduct 身份证。现在我想加入 ChildProduct 使用此查询:

$qb->select('mc', 'cp')
        ->from('ProductBundle:Category', 'mc')
        ->leftJoin('mc.childProducts', 'cp')
        // .....

当我执行此查询时,会出现以下错误:
sqlwalker.php行922中的contexterrorexception:
注意:未定义索引:childproducts
当我有 childProducts 在类别中。
现在我有两个问题:
我是否能够查询子表中不存在的父字段。
我的问题是什么

1wnzp6jl

1wnzp6jl1#

检查继承Map:继承Map
在文档后面尝试这个(我没有测试代码)

/**@ORM\MappedSuperclass */
class BaseProduct 
{
    /**
      * @ORM\ManyToOne(targetEntity="ProductBundle\Entity\Category", inversedBy="baseProducts")
      * @ORM\JoinColumn(name="menu_category_id", referencedColumnName="id", nullable=true)
   **/
     protected $category;

现在教义知道你的类是其他类的基类。您所要做的就是扩展基类并添加注解 @ORM\Entity ```
/**

  • @ORM\Entity()

**/

class ChildProduct extends BaseProduct
{

/**
 * @ORM\ManyToOne(targetEntity="ProductBundle\Entity\Category", inversedBy="childProducts")
 * @ORM\JoinColumn(name="menu_category_id", referencedColumnName="id", nullable=true)

**/
protected $category;

我认为你可以从产品中删除 `$category` 现场。它也应该起作用。

相关问题