DQL 函数在 Switch 语句 Returns 0 on var_dump 中,但 DQL 函数在不在 Switch 语句中时工作正常
DQL Function inside Switch Statement Returns 0 on var_dump, but DQL Function works perfectly when not in Switch Statement
我有这个 Doctrine DQL 查询,它可以在另一个函数中完美运行,但是当我把它放在我的 switch 语句中时,它 returns 0,无论是作为数组还是作为 int。我这辈子都弄不明白为什么会这样,否则它就可以完美地工作。
顺便说一句,当 $user 是 var_dumped 时,它 returns 当前用户,所以这不是问题。
这是 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 returns 0,无论是数组还是by (int)$this->getStatsBy DQL($user);
就像我说的,在我创建的另一个函数中只是为了测试,它工作得很好。 DQL函数和case都在默认controller里面,test函数也是。
有什么想法吗?
$this->midnight 是什么?
在输入case语句之前你有没有设置它?
我有这个 Doctrine DQL 查询,它可以在另一个函数中完美运行,但是当我把它放在我的 switch 语句中时,它 returns 0,无论是作为数组还是作为 int。我这辈子都弄不明白为什么会这样,否则它就可以完美地工作。
顺便说一句,当 $user 是 var_dumped 时,它 returns 当前用户,所以这不是问题。
这是 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 returns 0,无论是数组还是by (int)$this->getStatsBy DQL($user);
就像我说的,在我创建的另一个函数中只是为了测试,它工作得很好。 DQL函数和case都在默认controller里面,test函数也是。
有什么想法吗?
$this->midnight 是什么?
在输入case语句之前你有没有设置它?