Symfony 2: Lære kan ikke opprette forholdet

stemmer
5

Jeg er veldig nytt for Symfony 2,0 og lære. Jeg har staten og kunde enhet i annen bunt. Jeg vil bare legge til forholdet mellom stat og kunde. Jeg kodet statlige og kunde enheter. Her er min kode:

/**
 * @orm:Entity
 */
class Customer
{
    /**
     * @orm:Id
     * @orm:Column(type=integer)
     * @orm:GeneratedValue(strategy=AUTO)
     */
    protected $id;

    /**
     * @OneToOne(targetEntity=State)
     * @JoinColumn(name=state_id, referencedColumnName=id)
     */
    protected $state;

}

/**
 * @orm:Entity
 */
class State
{
    /**
     * @orm:Id
     * @orm:Column(type=integer)
     * @orm:GeneratedValue(strategy=IDENTITY)
     */
    protected $id;

    /**
     * @orm:Column(type=string, length=50)
     */
    protected $name;
}

Og min config fil:

doctrine:
    dbal:
        driver:   %database_driver%
        host:     %database_host%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%

    orm:
        auto_generate_proxy_classes: %kernel.debug%
        mappings:
            FogCustomerBundle: { type: annotation, dir: Entity/ }
            FogMainBundle: { type: annotation, dir: Entity/ }

Så mitt problem er når jeg generere skjema ved hjelp av php app/console doctrine:schema:createkommandoen tabeller genereres. Men forholdet er ikke generert / stat kolonnen ikke generead i kunde bord /. Hvorfor? Jeg har ikke noen ide? Jeg skal veldig glad for hver råd og innlegg.

Publisert på 10/05/2011 klokken 13:55
kilden bruker
På andre språk...                            


1 svar

stemmer
9

Du kan kjøre inn det problemet hvis du nøye følge eksempler fra Doctrine2 dokumentasjon, fordi Symfony2 plasserer alle Doctrine2 merknader inn i ormnavne, som du ser ut til å mangle på dine OneToOne og JoinColumn merknader. Din koden for $ statlig eiendom skal se slik ut:

/**
 * @orm:OneToOne(targetEntity="State")
 * @orm:JoinColumn(name="state_id", referencedColumnName="id")
 */
protected $state;

EDIT: Med endringer i den Symfony2 beta2 har merknader endret litt. Merknader må importeres før de brukes; importere Lære ser slik ut:

use Doctrine\ORM\Mapping as ORM;

Da den nye bruken ser slik ut:

/**
 * @ORM\OneToOne(targetEntity="State")
 * @ORM\JoinColumn(name="state_id", referencedColumnName="id")
 */
protected $state;

Det er litt diskusjon av flere endringer i merknaden system; hvis disse endringene er rullet ut, vil jeg være tilbake med en annen redigering.

Svarte 10/05/2011 kl. 14:02
kilden bruker

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