I decide to remove any reference to any foreign: "{table}_id", and
leave only "id" as the foreign key for each relation (insteado of
tableName_id), looks like that way everything run smoth and sql/db
are created OK, thanks Tom, this is the scheme:
User:
columns:
email: { type: string(255), notnull: true, unique: true, email:
true}
name: { type: string(255) }
lastname: { type: string(255) }
Administrator:
actAs:
Timestampable: ~
inheritance:
extends: User
type: concrete
columns:
superadmin: { type: boolean, default: false }
type: { type: string(255) }
relations:
Bussines: { local: id, foreign: bussines_id }
Client:
actAs:
Timestampable: ~
inheritance:
extends: User
type: concrete
columns:
pais: { type: string, country: true }
phone: { type: string }
ciudad: { type: string(255) }
estado: { type: string(255) }
direccion: { type: string(255) }
relations:
Book: { type: many, class: Book, local: id, foreign: id,
foreignAlias: Clients }
Staff:
actAs:
Timestampable: ~
inheritance:
extends: User
type: concrete
columns:
bussines_id: { type: integer }
branch_id: { type: integer }
relations:
Bussines: { local: bussines_id, foreign: id }
Branch: { local: branch_id, foreign: id }
Category:
actAs:
Sluggable:
fields: [ name ]
columns:
name: { type: string(255) }
Bussines:
actAs:
Sluggable:
fields: [ name ]
Searchable:
fields: [ name, direccion, pais ]
Timestampable: ~
columns:
category_id: { type: integer }
administrator_id: { type: integer }
name: { type: string(255) }
direccion: { type: string(255) }
pais: { type: string(255), country: true }
url: { type: string(255) }
email: { type: string(255), email: true }
telefono: { type: string(255) }
relations:
Category: { local: category_id, foreign: id, foreignAlias:
Bussineses, foreignType: one }
Administrator: { local: administrator_id, foreign: id, onDelete:
CASCADE, foreignType: one }
Branch: { type: many, class: Branch, local: id, foreign: id,
foreignAlias: Bussineses }
Staff: { type: many, class: Staff, local: id, foreign: id,
foreignAlias: Bussineses }
Branch:
columns:
bussines_id: { type: integer }
name: { type: string(255), default: 'Matriz' }
is_matriz: { type: boolean, default: true }
direccion: { type: string(255) }
email: { type: string(255) }
telefono: { type: string(255) }
relations:
Bussines: { local: bussines_id, foreign: id, onDelete: CASCADE,
foreignAlias: Branches }
Staff: { type: many, class: Staff, local: id, foreign: id,
foreignAlias: Branches }
Service: { type: many, class: Service, local: id, foreign: id,
foreignAlias: Branches }
Service:
actAs:
Timestampable: ~
Searchable:
fields: [ name ]
columns:
bussines_id: { type: integer }
branch_id: { type: integer }
name: { type: string(255), notnull: true }
costo: { type: decimal, notnull: true }
duration: { type: integer, notnull: true }
calendar: { type: string(255) }
relations:
Bussines: { local: bussines_id, foreign: id, foreignAlias:
Services, onDelete: CASCADE }
Branch: { local: branch_id, foreign: id, foreignAlias: Services,
onDelete: CASCADE }
Book: { type: many, class: Book, local: id, foreign: id,
foreignAlias: Services, onDelete: CASCADE }
Book:
actAs:
Timestampable: ~
Searchable:
fields: [ start ]
columns:
client_id: { type: integer }
service_id: { type: integer, notnull: true }
staff_id: { type: integer }
start: { type: date, notnull: true }
duration: { type: integer, notnull: true }
comments: { type: string(255) }
relations:
Client: { local: client_id, foreign: id, foreignAlias: Books,
onDelete: CASCADE }
Service: { local: service_id, foreign: id, foreignAlias: Books }
Staff: { local: staff_id, foreign: id, foreignAlias: Books }
On Feb 2, 11:32 am, AnTiLo0p <[email protected]> wrote:
> Thanks Tom, but I have now more doubts..., None of my other columns
> with relations have a definided "*_id" column but those id columns
> are auto-generated when the sql schema is created, I will test adding
> the book_id column to Book table, but do you have any idea of such
> behaivor (not automatic generation of column id) with that particular
> column?, is there any additional stuff that I should define?...
>
> Thanks a lot!
>
> Regards,
>
> On Feb 2, 9:27 am, Tom Ptacnik <[email protected]> wrote:
>
>
>
> > Look on Client: relations - you have Book relation here with foreign
> > id set to book_id, but you haven't book_id columnt in your Book
> > table... ;)
>
> > On 1 ún, 06:51,AnTiLo0p<[email protected]> wrote:
>
> > > I'm trying to make the following scheme work, but I just can't do
> > > it... I'm getting mess with all the doctrine "one to many" relations,
> > > could you please give me any adivise?, I'm getting following error
> > > after doing a doctrine-insert-sql:
>
> > > SQLSTATE[42000]: Syntax error or access violation: 1072 Key column
> > > 'book_id' doesn't exist in table. Failing Query: "CREATE TABLE book
> > > (id BIGINT AUTO_INCREMENT, client_id BIGINT, service_id BIGINT NOT
> > > NULL, start DATE NOT NULL, comments VARCHAR(255), created_at DATETIME
> > > NOT NULL, updated_at DATETIME NOT NULL, INDEX client_id_idx
> > > (client_id), INDEX service_id_idx (service_id), INDEX book_id_idx
> > > (book_id), PRIMARY KEY(id)) ENGINE = INNODB".
>
> > > This is what I'm tryng to model:
> > > One user/admin has 1 bussines that have 1 or many branches with one or
> > > many services
> > > There is one calendar for each service for each bussines
> > > And a client can do many books on any service from any bussines,
>
> > > the schema file I'm using is:
>
> > > User:
> > > columns:
> > > email: { type: string(255), notnull: true, unique: true, email:
> > > true}
> > > name: { type: string(255) }
> > > lastname: { type: string(255) }
>
> > > Administrator:
> > > actAs:
> > > Timestampable: ~
> > > inheritance:
> > > extends: User
> > > type: concrete
> > > columns:
> > > bussines_id: { type: integer }
> > > superadmin: { type: boolean, default: false }
> > > type: { type: string(255) }
>
> > > Client:
> > > actAs:
> > > Timestampable: ~
> > > inheritance:
> > > extends: User
> > > type: concrete
> > > columns:
> > > pais: { type: string, country: true }
> > > phone: { type: string }
> > > ciudad: { type: string(255) }
> > > estado: { type: string(255) }
> > > direccion: { type: string(255) }
> > > relations:
> > > Book: { type: many, class: Book, local: id, foreign: book_id,
> > > foreignAlias: Clients }
>
> > > Staff:
> > > actAs:
> > > Timestampable: ~
> > > inheritance:
> > > extends: User
> > > type: concrete
> > > columns:
> > > bussines_id: { type: integer }
> > > branch_id: { type: integer }
>
> > > Category:
> > > actAs:
> > > Sluggable:
> > > fields: [ name ]
> > > columns:
> > > name: { type: string(255) }
>
> > > Bussines:
> > > actAs:
> > > Sluggable:
> > > fields: [ name ]
> > > Searchable:
> > > fields: [ name, direccion, pais ]
> > > Timestampable: ~
> > > columns:
> > > category_id: { type: integer }
> > > administrator_id: { type: integer }
> > > name: { type: string(255) }
> > > direccion: { type: string(255) }
> > > pais: { type: string(255), country: true }
> > > url: { type: string(255) }
> > > email: { type: string(255), email: true }
> > > telefono: { type: string(255) }
> > > relations:
> > > Category: { local: category_id, foreign: id, foreignAlias:
> > > Bussineses, foreignType: one }
> > > Administrator: { local: administrator_id, foreign: id,
> > > foreignAlias: Bussineses }
> > > Branch: { type: many, class: Branch, local: id, foreign:
> > > branch_id }
>
> > > Branch:
> > > columns:
> > > bussines_id: { type: integer }
> > > name: { type: string(255), default: Matriz }
> > > is_matriz: { type: boolean, default: true }
> > > direccion: { type: string(255) }
> > > email: { type: string(255) }
> > > telefono: { type: string(255) }
> > > relations:
> > > Bussines: { local: bussines_id, foreign: id }
> > > Service: { type: many, class: Service, foreignAlias: Branches,
> > > local: id, foreign: service_id }
>
> > > Service:
> > > actAs:
> > > Timestampable: ~
> > > Searchable:
> > > fields: [ name ]
> > > columns:
> > > branch_id: { type: integer }
> > > name: { type: string(255), notnull: true }
> > > costo: { type: decimal, notnull: true }
> > > duration: { type: integer, notnull: true }
> > > relations:
> > > Branch: { local: branch_id, foreign: id, foreignAlias: Services }
> > > Book: { type: many, class: Book, local: id, foreign: book_id,
> > > foreignAlias: Services }
>
> > > Calendar:
> > > actAs:
> > > Timestampable: ~
> > > columns:
> > > bussines_id: { type: integer, notnull: true }
> > > service_id: { type: integer, notnull: true }
> > > content: { type: string(255) }
> > > relations:
> > > Service: { type: many, local: service_id, foreign: id,
> > > foreignAlias: Calendars }
>
> > > Book:
> > > actAs:
> > > Timestampable: ~
> > > Searchable:
> > > fields: [ start ]
> > > columns:
> > > client_id: { type: integer }
> > > service_id: { type: integer, notnull: true }
> > > start: { type: date, notnull: true }
> > > comments: { type: string(255) }
> > > relations:
> > > Client: { local: client_id, foreign: id, foreignAlias: Books }
> > > Service: { local: service_id, foreign: id, foreignAlias: Books }
--
You received this message because you are subscribed to the Google Groups
"symfony users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/symfony-users?hl=en.