【发布时间】:2013-11-15 17:15:13
【问题描述】:
为了使用连接表,我试图为我的 2 个实体设置注释,这让我很头疼。
我有 2 个表:user 和 cart。
购物车包含用户 ID 以及用户选择的产品。
1 个用户可以拥有许多产品,因此这是一种 ManyToOne 关系。
当我尝试建立关联时,我尝试了很多不同的方法,但都没有奏效。现在我有这个:
// ---------------- USER CLASS ------------------- //
/**
* @ORM\Entity
* @ORM\Table(name="user", indexes={@ORM\Index(name="firstname_idx", columns={"firstname"}), @ORM\Index(name="lastname_idx", columns={"lastname"}), @ORM\Index(name="email_idx",columns={"email"})})
*/
class User
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @ORM\Column(type="string", length=100)
*/
public $firstname;
/**
* @ORM\Column(type="string", length=100)
*/
public $lastname;
/**
* @ORM\Column(type="string", length=100, nullable=true)
*/
public $email;
/**
* @ORM\OneToMany(targetEntity="Cart", mappedBy="users")
**/
public $cart;
public function __construct() {
$this->cart = new ArrayCollection();
}
//...
还有 Cart 类:
/**
* @ORM\Entity
* @ORM\Table(name="cart")
*/
class Cart {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
public $id;
/**
* @ORM\Column(type="integer", nullable=true)
*/
public $user_id;
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="cart")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")
**/
public $users;
public function __construct() {
$this->users = new ArrayCollection();
}
当我使用这些表的连接执行查询时,我收到以下消息: “[语义错误] line 0, col 84 near 'u': Error: Class Cart has no association named User”
我的查询如下所示:
$q = $db->em->createQueryBuilder()
->select('c.*, u.*')
->from("Application\Entity\Cart","c")
->join("c.Application\Entity\User","u")
->getQuery();
我做错了什么?如何设置注释? 如有任何帮助,我将不胜感激。
【问题讨论】:
标签: php doctrine-orm annotations zend-framework2 many-to-one