Я думаю, что в вашей таблице БД с именем 'propuesta' есть иностранный ключ category_id, верно?Тогда в вашей сущности должно быть поле category, а не category_id, а его функции set и get - setCategory () и getCategory (), а не setCategoryId ().Для поля, связанного с посторонним ключом, должен был ожидаться его объект.Итак, в вашем случае
$category=$em->getDoctrine()->getEnitityManager()->getRepository('YourBundleName:Category')->find($id);
$propuesta->setCategory($category);//here category is an object.
, поэтому сначала проверьте вашу сущность propuesta и ее файл yml.
updated
1. Change your yml like this
Jander\JanderBundle\Entity\Propuestas:
type: entity
table: propuestas
fields:
id:
id: true
type: integer
unsigned: false
nullable: false
generator:
strategy: IDENTITY
user_id:
type: integer
nullable: true
titulo:
type: string
length: 230
fixed: false
contenido:
type: string
length: 230
fixed: false
tema:
type: string
length: 40
fixed: false
nullable: true
eliminado:
type: boolean
nullable: true
created:
type: date
gedmo:
timestampable:
on: create
votes_up:
type: integer
nullable: true
votes_down:
type: integer
nullable: true
manyToOne:
category:
targetEntity: PropuestasCategory
inversedBy: propuestas
joinColumn:
name: category_id
referencedColumnName: id
usuario:
targetEntity: Usuario
inversedBy: propuestas
joinColumn:
name: user_id
referencedColumnName: id
manyToMany:
tags:
targetEntity: TagPropuesta
inversedBy: propuestas
lifecycleCallbacks: { }
Вы делаете 'Не нужно указывать category_id в вашем файле yml, просто укажите отношение.
Измените свой файл сущности также
удалите поле categoryid его setCategoryId () и getCategoryId () функция.
Вы должны изменить все свои yml-файлы другой таблицы и задать отношение, как указано выше. Также измените их файлы сущностей.
Просто пройдите, как написать yml-файл и его отношение, затем используйте команду generate: enitites для symfony2.
Если вы не знаете, как написать yml и его сущность, еще один хороший метод - обратный процесс 1.Сначала создайте свою базу данных и ее таблицы, задайте для нее внешние связи, как вам нужно в вашем msql.
установите соединения с базой данных в файле settings.ini вашего проекта (надеюсь, вы знаете, простоукажите имя, имя пользователя, пароль (если есть)).
Удалите все свои yml-файлы в файлах res / config / doctrine / и Entity.
4.откройте ваш терминал, просто дайте следующие команды.Эти команды ниже автоматически генерируют все ваши файлы сущностей и yml-файлы с правильными отношениями, указанными в вашей базе данных.
a) .php app / console doctrine: mapping: convert yml ./src/Acme/BlogBundle/Resources/ config / doctrine --from-database --force // Acme / BlogBundle / пространство имен
Symfony2 создает сущность из базы данных
b) .php app / console doctrine: mapping: import AcmeBlogBundle yml //AcmeBlogBundle - это имя пакета c) .php app / console доктрина: генерировать: лица AcmeBlogBundle
если у вас есть какие-либо сомнения, обратитесь по этой ссылке Нажмите здесь
Надеюсь, это поможет вам