我正在尝试填充下面的一对多学说关联但是我遇到了问题,因为每个客户(主键:id
)都有他们的访问(主键:在访问表中捕获的customer_id
& visitday
}(我将访问日期作为自2000年1月1日以来持续到数据库之前的天数(因为datetime对象不能在主键)):
class Customer
{
/**
* @ORM\Column(type="integer", options={"unsigned"=true})
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToMany(targetEntity="Visit", mappedBy="visitday")
*/
protected $visits;
public function __construct()
{
$this->visits = new ArrayCollection();
}
/* -- */
}
Class Visit
{
/**
* @ORM\Column(name="customer_id", type="integer", options={"unsigned"=true})
* @ORM\JoinColumn(name="customer_id", referencedColumnName="id")
* @ORM\Id
*/
private $customer;
/**
* @ORM\Column(type="smallint")
* @ORM\ManyToOne(targetEntity="Customer", inversedBy="visits")
* @ORM\JoinColumn(name="visitday", referencedColumnName="id")
* @ORM\Id
*/
protected $visitday;
/* -- */
}
我的问题是我的客户对象没有填充客户的相应访问。我认为这是因为学说无法在查找中包含自己的客户ID。有办法解决这个问题吗?
答案 0 :(得分:0)
我建议你将$ visitday属性更改为DateTime。这将是您的访问日期时间戳。然后,客户属性应与访问相反。
/**
* @ORM\Column(name="customer_id", type="integer", options={"unsigned"=true})
* @ORM\ManyToOne(targetEntity="Customer", inversedBy="visits")
* @ORM\Id
*/
private $customer;
作为一种选择,您可以将Customer与Visits的关系更改为ManyToMany。所以你不会有重复的访问日期。