Hvordan å skape enhet med Symfony2

stemmer
15

Mitt generelle spørsmålet er hvordan man skal lage enheter og repositories med symfony2?

  • Hvordan skape enhet / depotet med en schema.yml med doktrine orm? Hvor jeg må lagre schema.yml fil? Hva er kommandoer for å skrive inn konsollen?
  • Jeg lage en klasse enhet uten schema.yml hva du skal gjøre etter? Kommando!?
  • Hvor jeg må spare min enhet / repository filen når foretaket er generelt for hele prosjektet eller spesifikke for en pakke?
Publisert på 13/02/2011 klokken 12:02
kilden bruker
På andre språk...                            


5 svar

stemmer
15

Mine løsninger (jeg vet ikke om det er bra, beste praksis !?)

YML

Lag " Entities.User.dcm.yml " -filen i HelloBundle / Resources / config / doktrine / metadata / orm med denne koden (ved eksempel):

Entities\User:
  type: entity
  table: users
  id:
    id:
      type: integer
      generator:
        strategy: AUTO
  fields:
    name:
      type: string
      length: 50

Deretter

php app/console doctrine:mapping:import "HelloBundle" yml

php app/console doctrine:generate:entities "HelloBundle"

Deretter kan du teste den i kontrolleren med:

$user = new \Sensio\HelloBundle\Entity\User;
$user->setName('Acubens');
$em = $this->get('doctrine.orm.entity_manager');
$em->persist($user);
$em->flush();

eller med PHP

Lag "User.php" -filen i HelloBundle \ Entity med denne koden

// Sensio/HelloBundle/Entity/User.php
namespace Sensio\HelloBundle\Entity;

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

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

Deretter

php app/console doctrine:mapping:import "HelloBundle"

Dette vil generere i "HelloBundle / Resources / config / doktrine / metadata / orm"

<?xml version="1.0" encoding="utf-8"?>
<doctrine-mapping xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://doctrine-project.org/schemas/orm/doctrine-mapping http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">
  <entity name="Sensio\HelloBundle\Entity\User" table="user">
    <change-tracking-policy>DEFERRED_IMPLICIT</change-tracking-policy>
    <id name="id" type="integer" column="id">
      <generator strategy="IDENTITY"/>
    </id>
    <field name="name" type="string" column="name" length="255"/>
    <lifecycle-callbacks/>
  </entity>
</doctrine-mapping>

Deretter slette User.php

php app/console doctrine:generate:entities "HelloBundle"

Etter at du har en ny fin fil User.php

<?php

namespace Sensio\HelloBundle\Entity;

/**
 * Sensio\HelloBundle\Entity\User
 */
class User
{
    /**
     * @var string $name
     */
    private $name;

    /**
     * @var integer $id
     */
    private $id;


    /**
     * Set name
     *
     * @param string $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }

    /**
     * Get name
     *
     * @return string $name
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Get id
     *
     * @return integer $id
     */
    public function getId()
    {
        return $this->id;
    }
}

Og hvordan gjør du? Hvorfor må jeg oppgi HelloBundle i mine bud?

ps : min config.yml

doctrine.dbal:
    driver:   pdo_mysql
    dbname:   sf2
    user:     root
    password: 
    logging:  %kernel.debug%
doctrine.orm:
    auto_generate_proxy_classes: %kernel.debug%
    mappings:
        HelloBundle: ~
Svarte 28/02/2011 kl. 17:14
kilden bruker

stemmer
2

Hvis du bruker YML merknad for å generere skjema du kunne ha denne:

Namespace\NameBundle\Entity\Build:
  type: entity
  repositoryClass: Namespace\NameBundle\Entity\Repository\BuildRepository
  ...

når du bruker kommandolinjen app / konsoll doktrinen: generere: enheter NamespaceNameBundle Dette vil generere enhet og depot klasse automatisk

Svarte 03/01/2012 kl. 11:14
kilden bruker

stemmer
1

Jeg har vært på leting etter en løsning med YML kartlegging, som det er ingensteds å bli funnet i boken. Etter chiling aroung litt, har jeg funnet ut at kartlegginger bør følge disse reglene:

  • filen må plasseres på src / YourAppName / YourBundleName / Resources / config / doktrine / EntityName.orm.yml
  • foretaket klassen navnet bør være full (f.eks: YourAppName \ YourBundleName \ Entity \ entitetsnavn

Jeg håper dette hjelper.

Svarte 04/11/2011 kl. 19:24
kilden bruker

stemmer
1

http://docs.symfony-reloaded.org/guides/doctrine/orm/index.html

Denne delen skal ha all den informasjonen du trenger.

Selv Symfony2 er i stabilisering scenen nå, den siste PR6 utgivelsen har fortsatt mange funksjoner mangler og mest sannsynlig ting vil endre på RC1-versjonen. Ikke vær redd for å dykke inn i koden og finne ut av ting selv.

Svarte 25/02/2011 kl. 11:28
kilden bruker

stemmer
0

Jeg tror at du må velge mellom klasse etablering eller YML konfigurasjon. Hvis du oppretter en enhet klasse og config YML filen, og deretter utføre doktrinen: generere: enheter Du har en feil. Jeg tilrå til deg å sitte fast med klasse stil med anotations, og deretter bruke $ php app / konsoll doktrinen: database: skape $ php app / konsoll doktrinen: schema: opprette

Svarte 25/02/2011 kl. 11:02
kilden bruker

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