gpt4 book ai didi

Symfony 4 Doctrine 关系,集合不获取数据

转载 作者:行者123 更新时间:2023-12-02 02:56:16 24 4
gpt4 key购买 nike

首先,请原谅我糟糕的英语。

I'm using Symfony 4.0 with Doctrine-bridge 4.0. When using a OneToMany relation, the property remains empty.

上下文

I'm trying to create a user entity and a bank account entity so that only account that are currently afillied to this user are able to be load by the user entity.

I've created an User entity with a OneToMany relation to an Account entity. The Account has a (inverse) ManyToOne relation to User. When I call $user I get an empty collection in my relation's field.

预期结果

When dump $user I expect to get a collection of the Accounts entities that are currently stored in $user accounts field and match the database with my user_id.

实际结果

返回一个空集合

   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;
}

最佳答案

尝试指定“EAGER”抓取以避免延迟加载。

**
* @ORM\OneToMany(targetEntity="Account", indexBy="user", mappedBy="user", fetch="EAGER")
* @ORM\JoinColumn(name="account", referencedColumnName="user")
*/
private $accounts;

我认为,如果未指定 Doctrine ,则在真正请求之前不会使用 getAccounts 从数据库加载帐户数据...

关于Symfony 4 Doctrine 关系,集合不获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49278842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com