Symfony2 spørre feil (mens de samme arbeider i henhold Doctrine2)

stemmer
1

Jeg bruker både Doctrine2 og Symfony2 men Symfony2 svikter meg på en oppgave jeg er i stand til å utrette i Doctrine2 (den 'frittstående' versjon).

I Doctrine2:

Jeg har 2 klasser, utfall, Billett slik:

namespace Entity;
/** @Entity @Table(name=tickets) */
class Ticket {
    /**  @Id @Column(type=integer) @GeneratedValue(strategy=AUTO) */
    private $id;
    /** @Column(type=string, length=100) */
    private $title;
    /** @OneToMany(targetEntity=Outcome, mappedBy=ticket) */
    private $outcomes;
    /* with setters and getters for title and outcomes */
    public function __toString() {
        return  $this->getTitle().' ('.$this->getId().')';
    }
    public function __construct () {
        $this->outcomes=new \Doctrine\Common\Collections\ArrayCollection();
    }
}

og

namespace Entity;
/** @Entity @Table(name=outcomes) */
class Outcome  {
    /** @Id @Column(type=integer) @GeneratedValue(strategy=AUTO) */
    private $id;
    /** @Column(type=string, length=100) */
    private $text;
    /** @ManyToOne(targetEntity=Ticket, inversedBy=outcomes) @JoinColumn(nullable=false) */
    private $ticket;
    public function __toString() {
        return  $this->getText().' ' .' ('.$this->getId().')';
    }
}

i min index.php bruker jeg

$query = $em->createQuery (SELECT t,o FROM Entity\Ticket t LEFT JOIN t.outcomes o WHERE t.id=1);
$query->useResultCache(true);
$tickets_2 = $query->execute();
$ticket_2 = $tickets_2[0];
$amount=count($ticket_2->getOutcomes());
echo $ticket_2. --ticket\n;
echo $amount. --outcomes\n;

og jeg får riktig utgang

nå i Symfony2 bruker jeg følgende definisjoner for enhetene:

namespace test\DemoBundle\Entity;
/** @orm:Entity @orm:Table(name=tickets) */
class Ticket {
    /**  @orm:Id @orm:Column(type=integer) 
         @orm:GeneratedValue(strategy=AUTO) */
    private $id;
    /** @orm:Column(type=string, length=100) */
    private $title;
    /** @orm:OneToMany(targetEntity=Outcome, mappedBy=response) */
    private $outcomes;
    ...
}
namespace test\DemoBundle\Entity;
/** @orm:Entity @orm:Table(name=outcomes) */
class Outcome  {
    /** @orm:Id @orm:Column(type=integer) @orm:GeneratedValue(strategy=AUTO) */
    private $id;
    /** @orm:Column(type=string, length=100) */
    private $text;
    /** @orm:ManyToOne(targetEntity=Ticket, inversedBy=outcomes) @orm:JoinColumn(nullable=false) */
    private $ticket;
    ....
}

Nå har jeg satt opp en kontroller med en test funksjon:

namespace test\DemoBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use test\DemoBundle\Entity\Ticket as Ticket;
use test\DemoBundle\Entity\Outcome as Outcome;
class TicketController extends Controller { 
    ...
    public function testAction() {
        $em = $this->get('doctrine.orm.entity_manager');  
        $query = $em->createQuery (SELECT t, o
            FROM test\DemoBundle\Entity\Ticket t  
            LEFT JOIN  t.outcomes o
            WHERE t.id=1);
        $query->useResultCache(true);
        $tickets_2 = $query->execute();
        $ticket_2 = $tickets_2[0];
        $amount=count($ticket_2->getOutcomes());
        $prepared_result=$ticket_2. --ticket .$amount. --outcomes ;
        $response = new Response($prepared_result);
        return $response; 
    }
}

på dette punktet får jeg en feil under forsøk på å kjøre den siste spørringen slik:

SQLSTATE [42000]: Syntaksfeil eller tilgangsbrudd: 1064 Du har en feil i SQL syntax; sjekk manualen som tilsvarer din MySQL server versjon for retten syntaks å bruke nær 'WHERE t0_.id = 1' på linje 1

fra webdebugger får jeg følgende syntaks fra PUD:

SELECT t0_.id AS id0,
 t0_.title AS title1,
 o1_.id AS id2,
 o1_.text AS text3,
 o1_.ticket_id AS ticket_id4
FROM tickets t0_ 
LEFT JOIN WHERE t0_.id = 1

Så jeg antar jeg mangler noe etter VENSTRE BLI så det er derfor jeg er gettint feilen i første omgang?

Hva gjør jeg galt? / Hva skal jeg gjøre?

Publisert på 12/05/2011 klokken 23:15
kilden bruker
På andre språk...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more