Symfony3 - 如何比较来自2个不同实体的属性

时间:2016-02-11 19:27:40

标签: entity-framework doctrine compare symfony

我想创建一个视图,只有当事件由当前登录的用户拥有时才会显示该事件。
所以我想将Events实体中的LoginID与当前用户ID进行比较。 我尝试使用以下功能:

public function showAction(Events $event, $id)
    {
        $em = $this->getDoctrine()->getManager();
        $user=$this->getUser()->getLoginid();
        $guests = $em->getRepository('VendorMyBundle:Guests')->findByEventid($id);
        $events = $em->getRepository('VendorMyBundle:Events')->findByEventid($id);
        // condition to display only events owned by the current user
        if ($events->getLoginid()==$user){
            $session = new Session();
            $session->set('eventid', $id);
            $deleteForm = $this->createDeleteForm($event);
            return $this->render('events/show.html.twig', array(
                'event' => $event,
                'delete_form' => $deleteForm->createView(),
                'guests' => $guests,
            ));
        }
        $this->addFlash('error', 'The event does not exist or you do not have permission to view it.');
        return $this->redirectToRoute('home_page');
    }

Events实体中的LoginID是Logins实体的多对一关系属性,该实体是我的用户提供者实体。
当我尝试在我的控制器中使用该方法查看时,我得到了这个:错误:使用IF语句在非对象上调用成员函数getLoginid()。
另外一个问题是,如何比较来自2个不同实体的2个属性值?

1 个答案:

答案 0 :(得分:2)

由于问题是你要返回一个数组,你有两个选择,更新findByEventid()以返回一个结果

return  $query->getSingleResult();

if ($events[0]->getLoginid()==$user){
..
}

希望这对你有所帮助。