Я после процесса, описанного здесь: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
защищены в EntityCartItem
. - Если я попытался указать идентификатор в 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);
И это дало мне ошибку.Но, может быть, я должен сделать что-то другое
Если я использую это я получаю: Дублированное определение столбца «идентификатор» на лице «Фармасьте \ FrontBundle \ Entity \ CartItem 'в сопоставлении столбцов поля или дискриминатора. Вот почему я блокирую – user788721