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 用土力学知识进行土坡稳定性分析与挡土墙设计
  • ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?