【问题标题】:How to access to element in an array generate by findAll如何访问 findAll 生成的数组中的元素
【发布时间】:2019-06-20 08:46:00
【问题描述】:

我必须测试我当前的用户是否存在于其他表中? 如何访问 userOldList 列表中的 getId:以下代码产生错误: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()));
       }
   }

【问题讨论】:

  • 你能在你的代码上调试和标记它在哪一行中断吗?您能否将if 拆分为$u1 = $userO->getId()$u2 = $userO->getId() 以验证它在哪里中断?
  • 我觉得这是一种很长的方法来做非常微小的事情。 Check if posted user data may be email already exists in table,这可能是主要问题。是@Julie 吗?

标签: php arrays doctrine findall


【解决方案1】:

foreach 中,您使用变量$userOldlList(注意lOldList 之间),但在顶部定义变量$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 中的一个新文件中,它立即突出显示了拼写错误的变量。拥有一个在您键入代码时检查代码的工具是提高工作效率的好方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多