【发布时间】: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->getUser();,你试过var_dump( $user )吗?也许它是空的? -
是的,我有,我忘了把它放在那里。它 var_dumps 当前用户。去图,但感谢您的评论。 :)
标签: php symfony dql doctrine-query