如何修复“ ProductSelection没有名为selectionType的字段或关联”原则错误

时间:2018-12-20 09:25:40

标签: symfony caching doctrine

问题:

我阅读了所有类似的问题,但是它并没有帮助我,所以我发布了另一个问题。 所以我将实体写入数据库表,却忘记了一个字段,所以我添加了该实体,当我尝试在where部分使用它时,出现此错误:

Uncaught PHP Exception Doctrine\ORM\Query\QueryException: "[Semantical Error] line 0, col 85 near 'type = :type': Error: Class SystemBundle\Entity\ProductSelection has no field or association named type" at /www/csibaf/SymfonyLealkudtuk/vendor/doctrine/orm/lib/Doctrine/ORM/Query/QueryException.php line 63

背景

我有一个表名称product_selection。在这些字段中,我有一个字段,并且有一个product_selection_type字段,我忘了在我的实体中写。所以添加以后,现在我得到了错误。 如果我将其注释掉,则查询中的where部分完全可以正常工作,但是如果我再次将其放置,则会导致错误。 我已经尝试过用doctrine:clear:cahce-meatadat/query/result清除故障,但是它对我有帮助。所以我检查了memchache并禁用了它。我们也不使用APC缓存,因此这不是问题。我们尝试了所有这些,没有任何尝试。 我试图用另一个完全不同的名称来创建另一个类,但是竞争是相同的,只是我更改了类名,并且如果我在查询生成器中更改了该实体的名称,它就可以正常工作。 有人处于类似状况吗?还是可以给我另一个建议?

我的代码:

ProductSelection.php

namespace SystemBundle\Entity;


use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="product_selection")
 **/
class ProductSelection
{
    /**
     * @ORM\Id
     * @ORM\Column(name="product_selection_id", type="integer")
     */
    protected $id;

    /**
     * @ORM\ManyToOne(targetEntity="ProductAll", inversedBy="selections")
     * @ORM\JoinColumn(name="product_selection_product_id", referencedColumnName="product_id", onDelete="CASCADE")
     **/
    protected $product;

    /**
     * @ORM\Column(name="product_selection_quantity", type="integer")
     */
    protected $quantity;

    /**
     * @ORM\Column(name="product_selection_price", type="integer")
     */
    protected $price;

    /**
     * @ORM\Column(name="product_selection_date", type="datetime")
     */
    protected $date;

    /**
     * @ORM\Column(name="ps_user_tracking_source", type="string")
     */
    protected $userTrackingSource;

    /**
     * @ORM\Column(name="product_selection_identify", type="string")
     */
    protected $identify;

    /**
     * @ORM\ManyToOne(targetEntity="UserBase")
     * @ORM\JoinColumn(name="product_selection_userbase_id", referencedColumnName="userbase_id", onDelete="CASCADE")
     **/
    protected $userbase;

    /**
     * @ORM\Column(name="product_selection_type", type="integer")
     */
    protected $type;

        below this just the getters and the setters...
}

QueryBuilder部分:

$selections = $this->entityManager->createQueryBuilder()
                ->select('ps')
                ->from('SystemBundle\Entity\ProductSelection', 'ps')
                ->where('ps.product = :id')
                ->andWhere('ps.type = :type')
                ->setParameters(array('id'=>$productId,'type'=>ProductSelectionConstant::NORMAL_CART));
            $selections = $selections->getQuery()
                ->useQueryCache($this->container->getParameter('useQueryCache'))
                ->useResultCache($this->container->getParameter('useResultCache'))
                ->getResult();

我的表格字段:

"PRODUCT_SELECTION_TYPE" NUMBER(1,0) DEFAULT 0 NOT NULL ENABLE, 
"PRODUCT_SELECTION_PRODUCT_ID" NUMBER(10,0) NOT NULL ENABLE, 
"PRODUCT_SELECTION_QUANTITY" NUMBER(4,0) NOT NULL ENABLE, 
"PRODUCT_SELECTION_PRICE" NUMBER(12,0) NOT NULL ENABLE, 
"PRODUCT_SELECTION_DATE" DATE NOT NULL ENABLE, 
"PS_USER_TRACKING_SOURCE" VARCHAR2(69 BYTE), 
"PRODUCT_SELECTION_IDENTIFY" VARCHAR2(32 BYTE), 
"PRODUCT_SELECTION_ID" NUMBER(10,0) NOT NULL ENABLE, 
"PRODUCT_SELECTION_USERBASE_ID" NUMBER(10,0)

因此,如果有人可以帮助我,那将非常好。非常感谢。

0 个答案:

没有答案