【问题标题】:Symfony2 - Find by a parent property objectSymfony2 - 通过父属性对象查找
【发布时间】:2015-06-12 13:54:41
【问题描述】:

我了解查询生成器的工作原理,但我正在尝试正确使用 ORM。

我有两个实体:Days 和 Tasks

Tasks 实体通过 ManyToOne 关联链接到 Day 实体。

Tasks.orm.yml

DJU\ MyBundle\ Entity\ Tasks:
  type: entity
table: null
repositoryClass: DJU\ MyBundle\ Entity\ TasksRepository
id:
  id:
  type: integer
id: true
generator:
  strategy: AUTO
fields:
  description:
  type: text
manyToOne:
  days:
  targetEntity: Days
inversedBy: tasks
joinColumn:
  name: days_id
referencedColumnName: id

Tasks.php

class Tasks {
    /**
     * Get temps
     *
     * @return \CIT\CalendarBundle\Entity\Temps 
     */
    public function getTemps()
    {
        return $this->temps;
    }
}

这是我的控制器:

class DefaultController extends Controller
{
     public function example2CalAction() {
        $em = $this->getDoctrine()->getManager();
        $tasks = $em->getRepository('DJUMyBundle:Tasks')->findAll();
        
        foreach($tasks as $onetask) {
            if ( $onetask->getDays()->getId() == '1' ) {
                $myt = $onetask->getDays();
            }
        }    
        return $this->render('DJUMyBundle:Default:sample2.html.twig', array('tasks' => $myt));
    }
}

如您所见,我的请求表现不佳。我想按天数查找任务。我该怎么办?

谢谢

【问题讨论】:

    标签: symfony doctrine-orm entity


    【解决方案1】:

    存储库是您的解决方案。

    class TasksRepository {
        public function findByDay(Day $day)
        {
            $q = $this
            ->createQueryBuilder('t')
            ->select('t')
            ->leftJoin('t.days', 'd')
            ->where("d.id = :dayId")
            ->setParameter('dayId', $dayId)
            ->getQuery();
            $result = $q->getResult();
    
            return $result;
        }
    }
    

    使用以下方法查找第 1 天的任务:

    $day = $em->getRepository('DJUMyBundle:Day')->find(1);
    $tasks = $em->getRepository('DJUMyBundle:Tasks')->findByDay($day);
    

    【讨论】:

    • 谢谢,我终于放弃使用查询生成器了。
    猜你喜欢
    • 2022-10-14
    • 1970-01-01
    • 2016-01-24
    • 2016-09-19
    • 2023-03-27
    • 2014-08-17
    • 2013-07-05
    • 2019-08-29
    相关资源
    最近更新 更多