Как получить доступ к элементу в массиве, генерируемом с помощью findAll - PullRequest
0 голосов
/ 20 июня 2019

Я должен проверить, существуют ли мои текущие пользователи в другой таблице или нет? как получить доступ к getId в списке userOldList: следующий код выдает ошибку: HTTP ERROR 500

$user = new User();
$repositoryUserOld= $this->getDoctrine()->getRepository(userOld::class);
$userOldList   = $repositoryUserOld->findAll();

$form = $this->createForm(UserType::class, $user);
$form->handleRequest($request);
$em = $this->getDoctrine()->getManager();
if ($form->isSubmitted() && $form->isValid()) {

    foreach ($userOldlList as $userO ) {

        If ($user->getId() == $userO->getId() )
       {
           $form->get('id')->addError(new FormError('User exists'));
           return $this->render('AppBundle:MyApp:user.html.twig', array('form' => $form->createView()));
       }
   }

1 Ответ

0 голосов
/ 20 июня 2019

В foreach вы используете переменную $userOldlList (примечание l между Old и List), но вверху вы определяете переменную $userOldList. Я думаю, именно поэтому вы получаете ошибку 500.

Что касается того, как сделать это более эффективно, это может заменить весь блок foreach (только условие в if - это новый код; внутренний блок - это копия вашего вопроса без каких-либо изменений):

if ($repositoryUserOld->find($user->getId()) {
    $form->get('id')->addError(new FormError('User exists'));
    return $this->render('AppBundle:MyApp:user.html.twig', array('form' => $form->createView()));
}

Кстати, изначально я просто скопировал ваш код в новый файл в PhpStorm, и он сразу выделил переменную с ошибками. Наличие инструмента, который проверяет ваш код при вводе, является отличным способом повысить производительность.

...