我想创建一个视图,只有当事件由当前登录的用户拥有时才会显示该事件。
所以我想将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个属性值?
答案 0 :(得分:2)
由于问题是你要返回一个数组,你有两个选择,更新findByEventid()以返回一个结果
return $query->getSingleResult();
或
if ($events[0]->getLoginid()==$user){
..
}
希望这对你有所帮助。