【问题标题】:DQL Function inside Switch Statement Returns 0 on var_dump, but DQL Function works perfectly when not in Switch StatementSwitch 语句中的 DQL 函数在 var_dump 上返回 0,但 DQL 函数在不在 Switch 语句中时可以正常工作
【发布时间】:2017-05-22 03:29:42
【问题描述】:

我有这个 Doctrine DQL 查询可以在另一个函数中完美运行,但是当我将它放在我的 switch 语句中时,它返回 0,无论是作为数组还是作为 int。我一生都无法弄清楚为什么会这样,否则它可以完美地工作。

顺便说一句,当 $user 被 var_dumped 时,它会返回当前用户,所以这不是问题。

这是 DQL:

/**
 * @param User $user
 * @return array
 */
public function getStatsByDQL(User $user)
{
    $parameters = array(
         'user' => $user, 'date' => $this->midNight
    );

    $em2 = $this->getDoctrine()->getManager()
        ->getRepository('AppBundle:ExerciseStats')
        ->createQueryBuilder('g')
        ->select('g.press_over_head_1_weight')
        ->setMaxResults(1)
        ->join('g.user', 'user')
        ->where('user = :user', 'g.timestamp < :date')
        ->orderBy('g.press_over_head_1_weight','DESC')
        ->getQuery()->setParameters($parameters)-
>getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY);
    return $em2;
}

这是 Switch 的一部分:

public function getExerciseWeightAndReps(string $exSet, int $setReps)
{
    $user = $this->getUser();
    $w = 0;
    $lastreps = 0;
    switch ($exSet) {

case 'poh1':
            $w = $this->getStatsByDQL($user);
            var_dump($w);
            $lastreps = $this->getUser()->getExerciseStats()->last()
            ->getPressOverHead1Reps();

var_dump返回0,不管是array还是by (int)$this->getStatsBy DQL($user);

就像我说的,在我创建的另一个函数中,它只是为了测试,它工作得很好。 DQL 函数和案例都在默认控制器中,测试函数也是。

有什么想法吗?

【问题讨论】:

  • 我想知道......既然你打电话给$user = $this-&gt;getUser();,你试过var_dump( $user )吗?也许它是空的?
  • 是的,我有,我忘了把它放在那里。它 var_dumps 当前用户。去图,但感谢您的评论。 :)

标签: php symfony dql doctrine-query


【解决方案1】:

$this->midnight 里有什么?

你在输入case语句之前有没有设置它?

【讨论】:

  • 宾果游戏!是的,它没有到达 Switch,因为它在另一个函数中,尽管在同一个文件中(从技术上讲,它似乎应该可以工作)。无论如何,谢谢!
猜你喜欢
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多