gpt4 book ai didi

php - 通过原则查找连接表

转载 作者:行者123 更新时间:2023-11-30 00:55:54 26 4
gpt4 key购买 nike

我正在尝试使用 EntityManager 加载表中的所有字段及其关联,这是我的(测试)场景:我有实体 user 和实体 user_post,并且用户可以有多个 user_post。

用户:

use Doctrine\ORM\Mapping as ORM;

/** @ORM\Entity */
class user
{

/**
* @var integer $id
*
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
public $id;

/**
* @ORM\OneToMany(targetEntity="user_post", mappedBy="id_user", cascade={"persist", "remove"}, orphanRemoval=TRUE, fetch="EAGER")
*/
public $posts;

/**
* @var string $author
*
* @ORM\Column(name="author", type="string", length=100, nullable=false)
*/
public $author;

/**
* @var text $content
*
* @ORM\Column(name="content", type="text", nullable=false)
*/
public $content;

/**
* @var text $createdAt
*
* @ORM\Column(name="created_at", type="text", nullable=false)
*/
public $createdAt;

public function __construct() {
$this->posts = new ArrayCollection();
}

}

用户帖子:

use Doctrine\ORM\Mapping as ORM;

/** @ORM\Entity */
class user_post
{

/**
* @var integer $id
*
* @ORM\Column(name="id", type="bigint")
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
public $id;

/**
* @var integer $id_user
*
* @ORM\ManyToOne(targetEntity="user", inversedBy="posts")
* @ORM\JoinColumn(name="id_user", referencedColumnName="id", nullable=FALSE)
*/
public $id_user;

/**
* @var text $content
*
* @ORM\Column(name="content", type="text", nullable=false)
*/
public $content;


}

我使用公共(public)变量是为了更容易调试。

现在,我正在尝试:

$user = $doctrine->em->find('user', 2);

我得到了 user 对象,但是它返回了 user_post 对象:

Doctrine\ORM\PersistentCollection Object ( [snapshot:Doctrine\ORM\PersistentCollection:private] => Array ( [0] => user_post Object ( [id] => 1 [id_user] => user Object *RECURSION*

并且不返回实际数据。它还返回一个巨大的数组。

有没有办法用find函数获取所有数据?

最佳答案

您的 $posts 属性映射为 OneToMany,这意味着 用户 将拥有许多 user_post

因此,$posts 被水合为 user_post 对象的集合,其中包含您期望的对象:

$user = $doctrine->em->find('user', 2);

foreach ($user->posts as $post) {
echo $post->content;
}

关于php - 通过原则查找连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20568247/

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