dongliqin6939 2015-09-06 19:51
浏览 36
已采纳

ZF2 Doctrine2 - 未定义的索引:clientId

I have implemented two entities with annotations:

/**
 * @Entity @Table(name="clients")
 **/
class Client
{
    /** @Id @Column(type="integer") @GeneratedValue **/
    protected $id;

    /** @Column(type="string") **/
    protected $name;

    /** @Column(type="string") **/
    protected $vatNumber;

    /**
     * @OneToMany(targetEntity="Order",mappedBy="clientId", cascade={"persist","remove"})
     * @var Order[]
     **/
    protected $orders;
    ...
}

/**
 * @Entity @Table(name="orders")
 **/
class Order
{
    /** @Id @Column(type="integer") @GeneratedValue **/
    protected $id;

    /**
     * @Column(type="integer")
     * @JoinColumn(name="clientId",referencedColumnName="id")
     */
    protected $clientId;
    ...
}

When I execute the following:

public function deleteClient($clientId) {
    if (is_int($clientId)) {
        $retr = $this->getClient($clientId);
        if ( $retr ) {
            $orders = $retr->getOrders(); // <- It fails here
            $this->db->getEntityManager()->detach($retr);
            foreach ($orders as $order) {
                $this->deleteOrder($order->getId());
            }
            $q1 = $this->db->getEntityManager()->createQuery(
                'delete from Main\Model\Client u WHERE u.id = '.$clientId);
            $q1->execute();
        }
    }
}

I get the following error message:

Notice: Undefined index: clientId in
...\vendor\doctrine\orm\lib\Doctrine\ORM\Persisters\BasicEntityPersister.php    
on line 1758

Why?

  • 写回答

1条回答 默认 最新

  • duanshang3230 2015-09-06 20:28
    关注

    Your annotations should look like this:

    /**
     * @Entity @Table(name="clients")
     **/
    class Client
    {
        ...
        /**
         * @OneToMany(targetEntity="Order", mappedBy="client", cascade={"persist","remove"})
         **/
        protected $orders;
        ...
    }
    
    /**
     * @Entity @Table(name="orders")
     **/
    class Order
    {
        ...
        /**
         * @ManyToOne(targetEntity="Client", inversedBy="orders")
         */
        protected $client;
        ...
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 MATLAB怎么通过柱坐标变换画开口是圆形的旋转抛物面?
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿