Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]sfGuardUser relacje z innymi obiektami
Forum PHP.pl > Forum > PHP > Frameworki
Marcstee
Witam.

Mam mały problem z stworzeniem relacji w schemacie. Sytuacja wygląda tak, że jest tabela z projektami i chciałbym aby do każdego projektu był przypisany user który go stworzył. Do jednego projektu jeden user, każdy user może mieć wiele projektów.

Używam sfDoctrineGuardPlugin wiec odwołanie musi być do sfGuardUser.

Tak póki co wygląda mój kod:

  1. Project:
  2. actAs: { Timestampable: ~ }
  3. columns:
  4. title: { type: string(255), notnull: true }
  5. lead: { type: string(500), notnull: true }
  6. content: { type: clob, notnull: true }
  7. image: { type: string(255) }
  8. author_id: { type: integer, notnull: true }
  9. relations:
  10. sfGuardUser:
  11. local: author
  12. foreign: id
  13. foreignAlias: Project


jednak bląd wyskakuje już na etapie budowania.

  1. SQLSTATE[42000]: Syntax error or access violation: 1072 Key column 'author' doesn't exist in table. Failing Query: "CREATE TABLE project (id BIGINT AUTO_INCREMENT, title VARCHAR(255) NOT NULL, lead TEXT NOT NULL, content LONGTEXT NOT NULL, image VARCHAR(255), author_id BIGINT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX author_idx (author), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = INNODB". Failing Query: CREATE TABLE project (id BIGINT AUTO_INCREMENT, title VARCHAR(255) NOT NULL, lead TEXT NOT NULL, content LONGTEXT NOT NULL, image VARCHAR(255), author_id BIGINT NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, INDEX author_idx (author), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci ENGINE = INNODB


Bardzo proszę o pomoc.
destroyerr
Może dlatego, że zgodnie z błędem tabela project nie ma kolumny author, a do takiej właśnie odwołujesz się przy definiowaniu relacji.
Marcstee
Hmm to przez te zmiany, które probowałem żeby zadziałało, anyway jak zmienie local na właściwe pole to dalej jest błąd:


  1. SQLSTATE[HY000]: General error: 1005 Can't create table 'informaticus.#sql-7d8_3' (errno: 150). Failing Query: "ALTER TABLE project ADD CONSTRAINT project_author_id_sf_guard_user_id FOREIGN KEY (author_id) REFERENCES sf_guard_user(id)". Failing Query: ALTER TABLE project ADD CONSTRAINT project_author_id_sf_guard_user_id FOREIGN KEY (author_id) REFERENCES sf_guard_user(id)


No i nie jestem pewien czy w ten sposób odzwierciedlę relację którą chce.
destroyerr
Google gryzie?
Marcstee
Nie gryzie. Szukałem dużo u wujka G ale nie wpadłem na to by szukać po błędzie... Cóż mój błąd ale na przyszłość będę widział. Człowiek całe życie się uczy smile.gif W każdym razie zmieniłem
author_id: { type: integer, notnull: true }
na
author_id: { type: integer(4), notnull: true }
i już dziala. Tylko nie jestem pewien dalej czy dobrą relacje zrobiłem.

EDIT:
Mam jeszcze jeden problem. Jak zrobić aby przy oddawaniu nowego projektu zawrzeć w formularzu id autora od razu. Bo teraz pojawia mi się select, a chce by to id było id zalogowanego.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.