Symfony 获取用于访问条令存储库中数据的空值
从FriendsRepo获取数据时,我通过id与Friends实体连接的用户实体的值为空 我也尝试过从UsersRepo访问数据,但没有成功 用户实体:Symfony 获取用于访问条令存储库中数据的空值,symfony,doctrine-orm,doctrine,Symfony,Doctrine Orm,Doctrine,从FriendsRepo获取数据时,我通过id与Friends实体连接的用户实体的值为空 我也尝试过从UsersRepo访问数据,但没有成功 用户实体: class User implements UserInterface { /** * @var int * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /**
class User implements UserInterface
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
* @Assert\NotBlank()
* @ORM\Column(name="email", type="string", length=20, unique=true)
*/
private $email;
/**
* @var string
* @Assert\NotBlank()
* @ORM\Column(name="username", type="string", length=20, unique=true)
*/
private $username;
/**
* @var string
* @Assert\NotBlank()
* @ORM\Column(name="password", type="string", length=255)
*/
private $password;
/**
* @var string
*
* @ORM\Column(name="user_picture", type="string", nullable=true)
*
*/
private $userPic;
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="AppBundle\Entity\UserPosts", mappedBy="user")
*
*
*/
private $userPosts;
public function __construct()
{
$this->userPosts = new ArrayCollection();
$this->myfriends = new ArrayCollection();
$this->friendof = new ArrayCollection();
}
/**
* @var
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Friends", mappedBy="afriendof")
*/
private $friendof;
/**
* @var
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Friends", mappedBy="friendsWithMe")
*/
private $myfriends;
/**
* @return User
*/
public function getFriendof()
{
return $this->friendof;
}
/**
* @param User $friendof
*/
public function setFriendof($friendof)
{
$this->friendof = $friendof;
}
/**
* @return User
*/
public function getMyfriends()
{
return $this->myfriends;
}
/**
* @param User $myfriends
*/
public function setMyfriends($myfriends)
{
$this->myfriends = $myfriends;
}
}
友人实体:
class Friends
{
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="myfriends")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
*/
private $friendsWithMe;
/**
* @ORM\Id()
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\User", inversedBy="friendof")
* @ORM\JoinColumn(name="friend_id", referencedColumnName="id", nullable=false)
*/
private $afriendof;
/**
* @var integer
*
* @ORM\Column(name="status", type="smallint")
*/
private $status;
/**
* @return User
*/
public function getFriendsWithMe()
{
return $this->friendsWithMe;
}
/**
* @param mixed $friendsWithMe
*/
public function setFriendsWithMe($friendsWithMe)
{
$this->friendsWithMe = $friendsWithMe;
}
/**
* @return User
*/
public function getAfriendof()
{
return $this->afriendof;
}
/**
* @param mixed $afriendof
*/
public function setAfriendof($afriendof)
{
$this->afriendof = $afriendof;
}
/**
* @return integer
*/
public function getStatus()
{
return $this->status;
}
/**
* @param integer $status
*/
public function setStatus($status)
{
$this->status = $status;
}
}
我的朋友们:
public function personalFriends($userId){
$em = $this->getEntityManager();
$result = $em->createQuery('SELECT friends FROM AppBundle\Entity\Friends friends WHERE friends.friendsWithMe= :userId');
$result->setParameter('userId', $userId);
return $result->getResult();
}
我希望获得朋友的用户名、图片的数据,但除了id之外,我在每个数据块上都得到空值,我知道问题非常小,但我无法找到解决方案,因此请提供帮助(示例):
这是因为默认情况下启用了延迟加载。您需要显式地加入用户表
$result = $em->createQuery('SELECT friends, user FROM AppBundle\Entity\Friends friends JOIN AppBundle\Entity\User user WHERE friends.friendsWithMe= :userId');
这样,数据将立即被提取。否则,将在您第一次尝试访问数据时提取数据,即
$friend->getAFriendOf()->getEmail();
这是因为默认情况下启用了延迟加载。您需要显式地加入用户表
$result = $em->createQuery('SELECT friends, user FROM AppBundle\Entity\Friends friends JOIN AppBundle\Entity\User user WHERE friends.friendsWithMe= :userId');
这样,数据将立即被提取。否则,将在您第一次尝试访问数据时提取数据,即
$friend->getAFriendOf()->getEmail();
这似乎是一个“延迟加载”问题
+\uu已初始化\uuu:false
。你能把你调用存储库的地方和你试图访问“afrienfof”数据的地方的代码发送给我们吗?这似乎是一个“延迟加载”问题+\uu初始化了\uuuuuuu:false
。你能给我们发送代码吗?你在哪里调用了存储库,在哪里尝试访问“afrienfof”dataSorry以获取转储问题,但在完成你告诉我的操作后,我与所有用户(包括好友数据)一起进入了我的数据数组。WHERE
子句是加载所有用户的问题吗??如何更正查询以仅加载两个好友而不加载所有其他用户?很抱歉出现转储问题,但在执行了您告诉我的操作后,我在我的数据数组中获得了包括好友数据在内的所有用户。WHERE
子句是加载所有用户的问题吗??如何更正查询以便只加载两个好友而不加载所有其他用户?