Symfony - массив типов доктрин - PullRequest
0 голосов
/ 05 июня 2018

У меня проблема с моей формой, и проблема с моей сущностью.Я получил ошибку:

Не удалось преобразовать значение базы данных "" в массив типа доктрины

, и проблема связана с полем $card.

public function addNewUser ($id, $firstName, $lastName)
{
    $termUsers = $this->getUserRepository()
        ->createQueryBuilder('nu')
        ->select('nu')
        ->where('nu.id = :id')
        ->setParameter('id', $id)
        ->setMaxResults(1)
        ->getQuery()
        ->getOneOrNullResult();

    if (empty($termUsers)) {
        $termUsers = new User();
        $termUsers->setId($id);
        $termUsers->setFirstName($firstName);
        $termUsers->setLastName($lastName);
        $this->em->persist($termUsers);
        $this->em->flush();
    }

    return $termUsers;
}

public function getUserAddAction()
{
    $this->requirePostParams(['id', 'firstName', 'lastName']);

    $this->get('lottoland.user')->addNewUser(
        $this->data['id'],
        $this->data['firstName'],
        $this->data['lastName']
    );

    return $this->success();
}

Когда я отправляю парм через Почтальона, я упоминал об ошибке, о которой упоминал.

1 Ответ

0 голосов
/ 05 июня 2018

Если вы хотите иметь отношение oneToMany между Card и User, то:

# Entity/Card.php
/**
 * @ORM\OneToMany(targetEntity="User", mappedBy="card")
 */
private $users;

public function __construct() 
{
    $this->users = new ArrayCollection();
}


# Entity/User.php
/**
 * @ORM\ManyToOne(targetEntity="Card", inversedBy="users")
 * @ORM\JoinColumn(name="card_id", referencedColumnName="id", nullable=false)
 */
private $card;

Что касается начинающих, более удобный способ создания таких отношений, просто объявите отношение как IЗатем, чтобы сгенерировать методы получения и установки, используйте удобную консольную команду symfony:

php bin/console doctrine:generate:entities AppBundle:Card
php bin/console doctrine:generate:entities AppBundle:User

, и это сгенерирует для вас все необходимые методы.

...