现在我正在尝试编写查询代码,通过将内容ID与用户ID匹配来返回用户名和内容。这是我的表格。
我有两张桌子。
username
和userid
。 content
本身和userid
。我想写一个像这样的查询:
SELECT username, content
FROM user
JOIN ON content
WHERE user.userid = content.userid
通过这种方式,查询返回用户所做内容的用户名。但我不知道如何在Symfony2或DQL中执行此操作。
答案 0 :(得分:2)
第1步 创建实体 用户和内容
例如:
的appbundle /实体/ 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 /实体/ 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步
在控制器中使用:
$em = $this->getDoctrine()->getManager();
$user = $em->getRepository('\AppBundle\Entity\User')->find($userId);
//content for user
$content = $user->getContent()->getText();