首先,请原谅我的这篇英文文章的语法错误。我正在使用Symfony 4.0和Doctrine-bridge 4.0。在使用OneToMany关系时,属性保持为空。
背景信息:我正在尝试创建一个用户实体和一个银行账户实体,以便只有当前与此用户相关的账户才能被用户实体加载。我已经创建了一个带有OneToMany关系到Account实体的User实体。Account实体具有(相反的)ManyToOne关系到User。当我调用$user时,在我的关系字段中得到一个空集合。
期望结果:当转储$user时,我希望获得在$user账户字段中存储并与我的user_id匹配的Accounts实体集合。
实际结果:返回一个空的集合。
背景信息:我正在尝试创建一个用户实体和一个银行账户实体,以便只有当前与此用户相关的账户才能被用户实体加载。我已经创建了一个带有OneToMany关系到Account实体的User实体。Account实体具有(相反的)ManyToOne关系到User。当我调用$user时,在我的关系字段中得到一个空集合。
期望结果:当转储$user时,我希望获得在$user账户字段中存储并与我的user_id匹配的Accounts实体集合。
实际结果:返回一个空的集合。
User {#399 ▼
-uid: 1
-name: "Elie"
-lastname: "XXXXX"
-birthdate: DateTime @821919600 {#410 ▶}
-email: "xxxxxxxxx@xxxxxx.xx"
-password: "$2y$13$QAdyMal7VZmXzR3IwCFHYeDKokW0bRqko5rZHPtnhrbncdVVAr7E."
-salt: null
-roles: "ROLE_ADMIN"
-username: "Elie"
-accounts: PersistentCollection {#256 ▼
-snapshot: []
-owner: User {#399}
-association: array:16 [ …16]
-em: EntityManager {#213 …11}
-backRefFieldName: "user"
-typeClass: ClassMetadata {#401 …}
-isDirty: false
#collection: ArrayCollection {#419 ▼
-elements: []
}
#initialized: false
}
}
其他信息
在搜索Doctrine @OneToMany时,我发现有些人忘记了一些参数、参数等,或者打错了字。但我在我的代码中找不到这样的问题。所以我有些困惑。请帮忙。
用户实体:
/**
* @ORM\Table(name="APP_USERS")
* @ORM\Entity(repositoryClass="App\Repository\UserRepository")
*/
class User implements UserInterface, \Serializable
{
...
**
* @ORM\OneToMany(targetEntity="Account", indexBy="user", mappedBy="user")
* @ORM\JoinColumn(name="account", referencedColumnName="user")
*/
private $accounts;
public function __construct()
{
$this->accounts = new ArrayCollection();
}
/**
* @return Collection|Account[]
*/
public function getAccounts()
{
return $this->accounts;
}
/**
* @param mixed $accounts
*/
public function setAccounts($accounts): void
{
$this->accounts = $accounts;
}
账户实体:
/**
* @ORM\Table(name="APP_ACCOUNTS")
* @ORM\Entity(repositoryClass="App\Repository\AccountRepository")
*/
class Account
{
...
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="accounts")
* @ORM\JoinColumn(nullable=true, unique=false, referencedColumnName="uid")
*/
private $user;
/**
* @return mixed
*/
public function getUser()
{
return $this->user;
}
/**
* @param mixed $user
*/
public function setUser($user): void
{
$this->user = $user;
}