2014-06-06 1 views
1

Я после процесса, описанного здесь:Sylius CartBundle: Нет Идентификатор/первичный ключ, указанный для лица

http://docs.sylius.org/en/latest/bundles/SyliusCartBundle/installation.html#creating-your-entities

Я пытался реализовать CartBundle в течение нескольких дней без успеха, любая помощь не ценят!

Я просто пытаюсь реализовать свой собственный объект продукта, как описано в документе.

Вот мой YAML:

Pharmacie\FrontBundle\Entity\CartItem: 
type: entity 
table: cart_item 
manyToOne: 
    product: 
     targetEntity: Product  
     joinColumn: 
      name: product_id 
      referencedColumnName: id 

база данных создается автоматически выглядит хорошо, с ID автоматического приращения, а product_id и все поля из sylius_cart_item

Но когда я пытаюсь получить доступ:

/cart/add?productId=3 

Я получаю

Идентификатор/первичный ключ, указанные для подкласса Entity «Pharmacie \ FrontBundle \ Entity \ CartItem» «Sylius \ Bundle \ CartBundle \ Model \ CartItem». Каждый объект должен иметь идентификатор/первичный ключ.

Даже в базе данных был установлен первичный ключ.

  • Атрибуты $id и $product защищены в Entity CartItem.
  • Если я попытался указать идентификатор в YAML, я получаю ошибки, говорящие, что это дубликат. Плюс в документе указывается, что он еще не переименовал идентификатор

UPDATE: Возможно, я пошел не в ту сторону.

Первый показ ошибка:

Новый объект был обнаружен через отношения 'Фармаси \ FrontBundle \ Entity \ CartItem # Produit', который не был настроен на каскаде сохраняются операции для лица: Фармаси \ FrontBundle \ Entity \ Продукт @ 000000007ba4ab6a0000000010e955d1. Чтобы решить эту проблему: либо явно вызовите EntityManager # persist() на этом неизвестном объекте, либо сконфигурируйте каскад, сохраняйте эту ассоциацию в сопоставлении, например, @ManyToOne (.., cascade = {"persist"}). Если вы не можете выяснить, какой объект вызывает проблему, реализуйте «Pharmacie \ FrontBundle \ Entity \ Product #__ toString()», чтобы получить подсказку. 500 Внутренняя ошибка сервера - ORMInvalidArgumentException

Поэтому я добавил

$this->entityManager->persist($item); 

И это дало мне ошибку.Но, может быть, я должен сделать что-то другое

ответ

0

Вашего файл объект должен выглядеть как это:

Pharmacie\FrontBundle\Entity\CartItem: 
    type: entity 
    table: cart_item 
    id: 
     id: 
       type: integer 
       generator: 
        strategy: AUTO 
    manyToOne: 
     product: 
      targetEntity: Product  
      joinColumn: 
       name: product_id 
       referencedColumnName: id 
+0

Если я использую это я получаю: Дублированное определение столбца «идентификатор» на лице «Фармасьте \ FrontBundle \ Entity \ CartItem 'в сопоставлении столбцов поля или дискриминатора. Вот почему я блокирую – user788721