내가 '포스트'는 원시 쿼리를 사용하여 테이블의 일부 필드를 표시하기 위해 노력하고있어 : 나는 오류가있어심포니 교리 : fetchAll()에 foreach 루프에서 필드 값을 얻을
$connection = $em->getConnection();
$statement = $connection->prepare("SELECT * FROM Post WHERE category_id = 1");
$statement->execute();
$posts = $statement->fetchAll();
...
foreach($posts as $post) {
$xml .= $post->getId();
$xml .= $post->getTitle();
$xml .= $post->getContent();
}
을 " FatalErrorException : 오류 : 구성원 함수가 아닌 개체의 getId() 호출 ... " 이러한 게터는 모두 내 게시물 엔티티에 있습니다. 내가 뭘 잘못하고 있는지에 대한 제안이 있니?
[편집]
$em = $this->getDoctrine()->getManager();
$post_repository = $em->getRepository('MyBundle:Post');
$posts = $post_repository->findBy(array('category_id' => 1));
foreach($posts as $post) {
$xml .= $post->getTitle();
}
나에게 "인식 할 수없는 필드 : CATEGORY_ID"반환합니다.
내 포스트 클래스 : 여기에 직접 연결을
class Post
{
/**
* @ORM\ManyToOne(targetEntity="MyBundle\Entity\Category", inversedBy="post")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="category_id", referencedColumnName="id")
* })
*/
private $category;
/**
* Set category
*
@param MyBundle\Entity\Category $category
*/
public function setCategory(\MyBundle\Entity\Category $category)
{
$this->category = $category;
}
/**
* Get category
*
@return MyBundle\Entity\Category
*/
public function getCategory()
{
return $this->category;
}
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
*/
private $title;
....
은 아마도 실제 SQL을 (또는 예정) 당신이 준 코드보다 더 복잡한을 높은 수준의 메커니즘은 불충분하다. 간단한 저장소 -> findBy()이 SQL에 충분합니다 – redbirdo
왜 간단한 경우에 원시 sql을 사용합니까? –