Doctrine orm 通过外国实体的身份
我有一个UserProject实体将用户链接到项目,为此我希望$projects\u id和$users\u id是主键。下面是一个例子:我希望下面的方法能够奏效:Doctrine orm 通过外国实体的身份,doctrine-orm,Doctrine Orm,我有一个UserProject实体将用户链接到项目,为此我希望$projects\u id和$users\u id是主键。下面是一个例子:我希望下面的方法能够奏效: <?php namespace Hoj\Entity; /** * @Entity (repositoryClass="Hoj\Entity\Repository\UserProjectRepository") * @Table(name="users_projects") */ class UserProject {
<?php
namespace Hoj\Entity;
/**
* @Entity (repositoryClass="Hoj\Entity\Repository\UserProjectRepository")
* @Table(name="users_projects")
*/
class UserProject
{
/**
* @Id
* @ManyToOne(targetEntity="Project", cascade={"all"}, fetch="EAGER", inversedBy="userProject")
*/
private $project;
/**
* @Id
* @ManyToOne(targetEntity="User", cascade={"all"}, fetch="EAGER", inversedBy="userProject")
*/
private $user;
public function __get($property)
{
return $this->$property;
}
public function __set($property, $value)
{
$this->$property = $value;
}
发生此错误可能是因为您正在查找的密钥不在关系中。。。当您运行许多数据装置时会发生这种情况:导入及其ID装置是静态的 我也有这个问题,然后清理了整个基地,包括序列,看到这样工作 考虑为应用程序创建单元测试,以确保类是正确的,从而解决问题
拥抱有没有特别的理由不使用@manytomy?还有,这是2.0还是2.1?我记得2.1增加了对基于FK的标识的支持,其中2.0不起作用。感谢@JaniHartikainen,我简化了示例-UserProject表上实际上有更多字段,这就是我没有使用多对多的原因。我也在使用第2.1条。
<?php
namespace Hoj\Entity;
/**
* @Entity (repositoryClass="Hoj\Entity\Repository\UserProjectRepository")
* @Table(name="users_projects")
*/
class UserProject
{
/** @Id @Column(type="integer", length=11) */
private $users_id;
/** @Id @Column(type="integer", length=11) */
private $projects_id;
/**
* @var Project
* @ManyToOne(targetEntity="Project", cascade={"all"}, fetch="EAGER")
* @JoinColumns({
* @JoinColumn(name="projects_id", referencedColumnName="id")
* })
*/
private $project;
/**
* @var User
* @ManyToOne(targetEntity="User", cascade={"all"}, fetch="EAGER")
* @JoinColumns({
* @JoinColumn(name="users_id", referencedColumnName="id")
* })
*/
private $user;
public function __get($property)
{
return $this->$property;
}
public function __set($property, $value)
{
$this->$property = $value;
}
/**
* @param \Doctrine\Common\Collections\Collection $userProject
* @OneToMany(targetEntity="UserProject", mappedBy="project", cascade={"persist","remove"})
*/
private $userProject;