You have 2 options: 1) User <- ManyToMany -> Group, where the join-table does _not_ have extra columns.
2) User <- OneToMany -> Membership <- ManyToOne -> Group, where Membership can have as many extra properties (and even other associations) as you like. You'll have to choose! -- Jasper N. Brouwer (@jaspernbrouwer) Sent with my phone, so might be a bit brief. > On 07 Jan 2014, at 18:50, Sandro Cândido <[email protected]> wrote: > > Hi > > Sorry for the insistence that I need is this use case > http://docs.doctrine-project.org/en/latest/reference/association-mapping.html#many-to-many-unidirectional > where table "users_groups" has extra columns created when running yaml php > doctrine orm:schema-tool:create > > users_groups to create the table with extra columns and relationships with > the users and group tables > > NEW SAMPLE > > Running yaml php doctrine orm:schema-tool:create > > CREATE TABLE User ( > id INT AUTO_INCREMENT NOT NULL, > name varchar(100) DEFAULT NULL > password varchar(64) DEFAULT NULL > PRIMARY KEY(id) > ) ENGINE = InnoDB; > > yaml "users_groups" as this would be, this is what I need. The yaml I did not > create the database with the ternary relationship and the extra columns > > CREATE TABLE users_groups ( > id INT AUTO_INCREMENT NOT NULL, > lorem_ipsum varchar(100), "columm extra" > lorem_ipsum varchar(100), "columm extra" > user_id INT NOT NULL, > group_id INT NOT NULL, > PRIMARY KEY(id) > ) ENGINE = InnoDB; > > CREATE TABLE Group ( > id INT AUTO_INCREMENT NOT NULL, > name varchar(100) DEFAULT NULL > description varchar(64) DEFAULT NULL > PRIMARY KEY(id) > ) ENGINE = InnoDB; > > > > Em terça-feira, 7 de janeiro de 2014 13h49min03s UTC-2, Jàπ (Jasper N. > Brouwer) escreveu: >> >> This looks correct :) >> >> Please remember that in this case there is _no_ direct association between >> Person and Company, as the relationship is established through Job. >> >> If you like you can add a proxy method to fetch all Companies from a Person: >> >> class Person >> { >> // ... >> >> public function getCompanies() >> { >> return array_map( >> function ($job) { >> return $job->getCompany(); >> }, >> $this->jobs >> ); >> } >> >> -- >> Jasper N. Brouwer >> (@jaspernbrouwer) >> >> >> On 7 Jan 2014, at 15:15, Sandro Cândido <[email protected]> wrote: >> >> > Hi >> > >> > Below is a template to create annotation and database, in this model to >> > perform the job CLI php doctrine orm:generate-entities /var/www/project >> > --generate-annotations=true after php doctrine orm:schema-tool:create >> > you'll see that the job does not add table relationship with the company >> > table. I need a many to many relationship with the job table that is has >> > the extra columns >> > >> > YAML: >> > >> > person\models\entities\Person: >> > type: entity >> > repositoryClass: person\models\entities\PersonRepository >> > table: person >> > indexes: >> > name_person_index: >> > columns: [ name ] >> > fields: >> > id: >> > id: true >> > type: integer >> > generator: >> > strategy: IDENTITY >> > name: >> > type: string >> > length: 200 >> > nullable: false >> > birth_date: >> > type: date >> > nullable: false >> > email: >> > type: string >> > length: 80 >> > nullable: true >> > username: >> > type: string >> > length: 60 >> > nullable: false >> > password: >> > type: string >> > length: 64 >> > nullable: false >> > oneToMany: >> > jobs: >> > targetEntity: person\models\entities\Job >> > mappedBy: person\models\entities\Person >> > cascade: ["persist", "merge"] >> > >> > ------------------------------------------------------------------------------------------------------------ >> > >> > person\models\entities\Job: >> > type: entity >> > repositoryClass: person\models\entities\JobRepository >> > table: job >> > fields: >> > id: >> > id: true >> > type: integer >> > generator: >> > strategy: IDENTITY >> > begin_salary: >> > type: integer >> > nullable: false >> > monthly_salary: >> > type: integer >> > nullable: false >> > begin_job_date: >> > type: date >> > nullable: false >> > resignation_date: >> > type: date >> > nullable: false >> > manyToOne: >> > company: >> > targetEntity: person\models\entities\Company >> > joinColumn: >> > name: company_id >> > referencedColumnName: id >> > manyToOne: >> > company: >> > targetEntity: person\models\entities\Person >> > joinColumn: >> > name: person_id >> > referencedColumnName: id >> > >> > -------------------------------------------------------------------------------------------------------- >> > >> > >> > person\models\entities\Company: >> > type: entity >> > repositoryClass: person\models\entities\CompanyRepository >> > table: company >> > indexes: >> > name_company_index: >> > columns: [ name ] >> > fields: >> > id: >> > id: true >> > type: integer >> > generator: >> > strategy: IDENTITY >> > name: >> > type: string >> > length: 200 >> > nullable: false >> > description: >> > type: text >> > nullable: false >> > oneToMany: >> > jobs: >> > targetEntity: person\models\entities\Job >> > mappedBy: person\models\entities\Person >> > cascade: ["persist", "merge"] >> > >> > Em terça-feira, 7 de janeiro de 2014 06h14min34s UTC-2, Jàπ (Jasper N. >> > Brouwer) escreveu: >> > Hi Sandro, >> > >> > My blog posts describe how to manage such a use-case, but uses annotations >> > to keep it simple. >> > >> > You can have a look at the docs [1] and yaml driver [2] to translate the >> > annotations to yaml. >> > >> > [1]: >> > http://docs.doctrine-project.org/en/latest/reference/yaml-mapping.html >> > [2]: >> > https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/Mapping/Driver/YamlDriver.php >> > >> > >> > -- >> > Jasper N. Brouwer >> > (@jaspernbrouwer) >> -- You received this message because you are subscribed to the Google Groups "doctrine-user" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/doctrine-user. For more options, visit https://groups.google.com/groups/opt_out.
