Symfony2存储库查询

时间:2017-05-03 23:09:01

标签: php symfony orm doctrine

我与很多表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是一个数组??

我该怎么办?还有另一个技巧(查询的返回类型是对象)??

1 个答案:

答案 0 :(得分:0)

如果它是一个数组你可以迭代它

foreach ($userprog->flights() as $flight) {
    if($flight->getId() == $comp->getId()){
        //...
    }
}

因为你的变量和属性命名对我来说完全不清楚,这只是为了让你明白

它不是一个简单的数组,而是一个doctrine arrayCollection 所以这里有一个可用方法列表

http://www.doctrine-project.org/api/common/2.3/class-Doctrine.Common.Collections.ArrayCollection.html

也许$userprog->flights()->contains($element)

是你真正的追求