现在我正在尝试通过将内容 ID 与用户 ID 匹配来编写查询返回用户名和内容的代码。这是我的 table 的样子。
我有两个表。
- 一个是用户表包含
username
和userid
。 - 另一个表是内容表,包含内容 ID、
content
本身和userid
。
我想写这样的查询:
SELECT username, content
FROM user
JOIN ON content
WHERE user.userid = content.userid
这样,查询返回用户名和用户创建的内容。但我不知道如何在 Symfony2 或 DQL 中做到这一点。
最佳答案
第一步 创建实体 用户和内容
例如:
AppBundle/Entity/User.php
/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity
*/
class User
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="username", type="string", length=24, nullable=false)
*/
private $username;
/**
* @ORM\OneToOne(targetEntity="AppBundle\Entity\Content")
* @ORM\JoinColumn(name="content_id", referencedColumnName="id")
**/
private $content;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* @return string
*/
public function getUsername()
{
return $this->username;
}
/**
* @param string $username
*/
public function setUsername($username)
{
$this->username = $username;
}
/**
* @return \AppBundle\Entity\Content
*/
public function getContent()
{
return $this->content;
}
/**
* @param string $content
*/
public function setContent($content)
{
$this->content = $content;
}
}
AppBundle/Entity/Content.php
/**
* Content
*
* @ORM\Table(name="content")
* @ORM\Entity
*/
class Content
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="text", type="text", nullable=true)
*/
private $text;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* @return string
*/
public function getText()
{
return $this->text;
}
/**
* @param string $text
*/
public function setText($text)
{
$this->text = $text;
}
}
第 2 步
在 Controller 中使用:
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('\AppBundle\Entity\User')->find($userId);
//content for user
$content = $user->getContent()->getText();
关于php - 一对多关系的 Symfony2 createQueryBuilder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34188633/