我与很多表progvol,表用户,表航班有关系 和一对多表用户关系rammasage 在表rammassage我有一个日期字段,在表格飞行中我有一个开始日期我比较这两个日期 所以我编写了一个sql查询来了解vol表的用户的日期。 首先,我的控制器获取当前用户$ user = $ this-> getUser(); 在我的repositroy我做了
<?php
namespace PfeBundle\Repository;
use Doctrine\ORM\EntityRepository;
/**
* programmevolRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class programmevolRepository extends EntityRepository
{
public function getOnlyActive ($valeur,$vol)
{
$qb = $this->createQueryBuilder('a');
$qb->where('a.users = :valeur'); // means id_user of table programmevol = $valeur($user->getId());
$qb->where('a.vols = :vol'); // means id_vol of table vol = $vol (une instancedelaclassevol->getId());
$qb->where('vol' , $vol);
$qb->setParameter('valeur', $valeur);
return $qb->getQuery()->getOneOrNullResult();
}
}
在我的控制器中我做了
$comp = new CompanyEvents();
$user = $this->get('security.token_storage')->getToken()->getUser();
$userprogvol = $em->getRepository('PfeBundle:programmevol')->getOnlyActive($user->getId(),$comp->getId());
现在我有一个$ userprogvol表,其中我有programvol表的航班ID +当前用户的id
现在我想做(如果$ userprog-&gt; flight(id_vol)== $ comp-&gt; id_vol)$ var = $ comp-&gt; getDebt();但$ userprogvol是一个数组??
我该怎么办?还有另一个技巧(查询的返回类型是对象)??
答案 0 :(得分:0)
如果它是一个数组你可以迭代它
foreach ($userprog->flights() as $flight) {
if($flight->getId() == $comp->getId()){
//...
}
}
因为你的变量和属性命名对我来说完全不清楚,这只是为了让你明白
它不是一个简单的数组,而是一个doctrine arrayCollection 所以这里有一个可用方法列表
也许$userprog->flights()->contains($element)
是你真正的追求