Symfony Doctrine : Feld Wert in der foreach-Schleife auf fetchAll()

Ich versuche, die Anzeige einiger Felder einer Tabelle 'Post' mit einem raw-Abfrage :

$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();
    }

Hab ich noch einen Fehler "FatalErrorException: Error: Call to a member function getId() on a non-object in ..."
Alle diese Getter sind in meinen Post Entität. Jede Andeutung über das, was ich falsch mache ?

[BEARBEITEN]

$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();
    }

Gibt mir "Unbekanntes Feld: "category_id".

Meinen Post Klasse :

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;

....
Vermutlich Ihre eigentliche sql ist (oder wird) komplexer als der code, den Sie gegeben haben, hier, wie bei symfony/doctrine raw-queries werden nur selten verwendet, wenn die höhere Ebene die Mechanismen unzureichend sind. Ein einfaches repository->findBy() würde ausreichen, um diese sql
Warum verwenden Sie raw-sql für solche einfachen Fälle?

InformationsquelleAutor | 2013-11-04

Schreibe einen Kommentar