Doctrine 2.0 - проблема при добавлении - PullRequest
0 голосов
/ 17 августа 2011

Я использую Doctrine 2.0 и создаю сущности на основе схемы.

У меня есть две сущности Сообщения и пользователи

и ИД пользователя в сообщениях связаны с id у пользователей.

когда я создавал сущности, я получал что-то подобное в сообщениях сущность

/**
 * Set from
 *
 * @param UserDetails $from
 */
public function setFrom(\UserDetails $from)
{
    $this->from = $from;
}

как я могу установить значение from при вставке ..

я попытался вставить строку

, как показано ниже

$message = new \Messages;
$message->setMessage((string)$vars['message']);
$message->setFrom((int)$vars['from']);
$message->setTo((int)$vars['to']);
$this->em->persist($message);
$this->em->flush();     

я получаю следующую ошибку.

Исправляемая фатальная ошибка: аргумент 1 передается в Messages :: setFrom () mustбыть экземпляром UserDetails, заданным целым числом, вызываемым в C: \ wamp \ xxxxxxxx.php в строке 31 и определяемым в C: \ wamp \ xxxxxxx \ Entities \ Messages.php в строке 156.

Ответы [ 2 ]

2 голосов
/ 17 августа 2011

Вам необходимо найти или создать объект UserDetails, соответствующий этому идентификатору, и использовать его в качестве аргумента для setFrom.

1 голос
/ 17 августа 2011

Вам нужно передать экземпляры объекта, как сказал Дэн.Например:

$from = $this->em->find('UserDetails', (int) $vars['from']);
$to   = $this->em->find('UserDetails', (int) $vars['to']);

$message = new \Messages;
$message->setMessage((string)$vars['message']);
$message->setFrom($from);
$message->setTo($to);

$this->em->persist($message);
$this->em->flush();     
...