Неустранимая ошибка: вызов функции-члена getId () для массива в Symfony - PullRequest
0 голосов
/ 13 марта 2019

Вот содержимое моей пользовательской функции репозитория для моего фида сущностей.

SearchController.php

$searches=$this->getDoctrine()-getRepository('CocoricoUserBundle:User')->findPersonType(1);

Функция хранилища:

public function findPersonType($usertype)
    {
        $queryBuilder = $this->createQueryBuilder('u')
            ->addSelect("u")
            ->where('u.personType = :personType')
            ->setParameter('personType', $usertype);
        try {
            $query = $queryBuilder->getQuery();
            return $query->getResult();
        } catch (NonUniqueResultException $e) {
            return null;
        }
    }

Когда я пытаюсь использовать цикл в mycontroller

foreach ($searches->getId() as $s) {

     echo '<pre>';
     print_r($s->getAccreditationdata());
     echo '<br>';

}
die;

У меня ошибка:

Неустранимая ошибка: вызов функции-члена getId () для массива

Если мне так нравится, то все работает нормально:

foreach ($searches as $s) {

    echo '<pre>';
    print_r($s->getId());
    echo '<br>';
}
die;

Я получаю следующие user_ids: 12345, 1234567, 234567

Теперь, для этих идентификаторов пользователей, далее я хочу найти там аккредитации и секторы, оба имеют много-много-много общего в User Entity. Итак, как я могу получить несколько данных "секторов" и "аккредитаций" обо всех этих пользователях в списке на странице поиска?

Edit:

Ниже приведена связь между субъектом и сектором пользователя.

/**
     * @ORM\ManyToMany(targetEntity="UserBundle\Entity\Sectors", inversedBy="user", cascade={"persist"})
     * @ORM\JoinTable(
     *      joinColumns={@ORM\JoinColumn(onDelete="CASCADE")},
     *      inverseJoinColumns={@ORM\JoinColumn(onDelete="CASCADE")}
     * )
     */
    public $sectors;

    /**
     * @ORM\ManyToMany(targetEntity="UserBundle\Entity\Accreditations", inversedBy="user" , cascade={"persist"})
     * @ORM\JoinTable(
     *      joinColumns={@ORM\JoinColumn(onDelete="CASCADE")},
     *      inverseJoinColumns={@ORM\JoinColumn(onDelete="CASCADE")}
     * )
     */
    public $accreditationdata;

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Разве этот код не работает? Он такой же, как ваш, но без "getId ()" в цикле.

foreach ($searches as $s) {

     echo '<pre>';
     print_r($s->getAccreditationdata());
     echo '<br>';

}
die;
0 голосов
/ 13 марта 2019

Если у вас есть связь между сущностью «Поиск» и сущностью «Пользователь», вы можете сделать это следующим образом

foreach ($searches as $s) {
echo '<pre>';
// Instead of print_r($s->getId());
// Try
print_r($s->getUser()->getSectors());
print_r($s->getUser()->getAccreditationdata());
echo '<br>';
}
die;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...