Symfony2中的自定义存储库类

拉兹

我正在创建一个任务管理应用程序演示项目,只是为了掌握symfony2。到目前为止,我已经完成了CRUD操作。这是我的默认控制器。我在这里调用getNumberOfTasks()。

namespace TaskManagerBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;

use TaskManagerBundle\Entity\Projects;
use TaskManagerBundle\Form\ProjectType;



class DefaultController extends Controller
{
public function indexAction()
{
    $em = $this->getDoctrine()->getManager();

    $entities = $em->getRepository('TestBundle:Projects')
            ->findAll();

    $tasks = $em->getRepository('TestBundle:Projects')
            ->getNumberOfTasks();

    return $this->render('TestBundle:Default:index.html.twig', [
                'projects' => $entities,
                'tasks' => $tasks,
            ]
    );
}

这是我的ProjectRepository,在其中定义了getNumberOfTasks方法。

<?php

      namespace TaskManagerBundle\Entity\Repository;

     use Doctrine\ORM\EntityRepository;
     use TaskManagerBundle\Entity\Projects;
     use TaskManagerBundle\Entity\Tasks;

     /**
      * ProjectsRepository
       *
      * This class was generated by the Doctrine ORM. Add your own               custom
       * repository methods below.
       */
     class ProjectsRepository extends EntityRepository
     {
      public $id;
      public function getNumberOfTasks()
     {
       //$projects = new Projects();

      $query = $this->getEntityManager()
        ->createQuery(
                    'SELECT p FROM TestBundle:Tasks p WHERE p.projects = :project_id'
                )
        ->setParameter('project_id', $this->id )
        ->getResult();
    return count($query);
}

}

这是我的index.html.twig

   {% for project in projects %}
      <tr>
         <td>
        {% if project.completed == 0 %}
            {{ tasks }}
        {% else %}
            Completed
        {% endif %}
      </td>
      </tr>
    {% endfor %}

我正在尝试获取每个项目的任务数量。我怎么做?在yii2中,我可以只执行$ this-> id,但是在这里我无法做到这一点。

迈克尔·辛德利

您根本不需要“ getNumberOfTasks”方法。

您应该做的是在“教义实体”中指定关联。

你可以在这里读到它:

http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html

根据您的命名,我会怀疑从Project到Task的OneToMany关系,以及从Task到Project的ManyToOne关系。

正确映射后,可以在Twig中使用:

{{ project.tasks|length }} 

获取项目中的任务数。您需要做的就是将项目实体传递给Twig,Symfony将处理其余的工作,包括加载所有关系。

这是做您想做的最好的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Symfony2主义自定义存储库类[语义错误]第0行,“项目p”附近的第14列:错误:未定义类“项目”

自定义/业务类的Symfony2依赖注入

单元测试中的Symfony自定义存储库类

在我的自定义类Symfony2中获取容器参数

如何在symfony2中为自定义类创建服务容器

Symfony2中的自定义配置

自定义存储库Symfony

自定义Symfony2表单

Symfony2自定义按钮

Symfony2 DoctrineExtensions preSoftDelete事件调用,不将自定义数据保存在数据库中

PHP Symfony2自定义身份验证,无需数据库(SOAP)

Symfony2从自定义用户类登录用户实例

在自定义类(Symfony2)中使用参数值

自定义存储库中的 PropertyReferenceException

symfony 命令 exec 中的 Symfony2 monolog 记录器自定义字段

Symfony:无法启用自定义存储库

Symfony2自定义选民角色层次结构

从自定义目录加载Symfony2翻译

Symfony2,自定义Ajax请求和CSRF

自定义错误页面InvalidArgumentException Symfony2

symfony2类和存储库体系结构

Symfony | 如何从控制器中的存储库访问自定义方法?

在Symfony2中将自定义验证器作为服务创建

可以修改/写入symfony2中的自定义parameter.yml文件吗?

自定义身份验证提供程序中的Symfony2 ContextErrorException

Twig和Symfony2中的自定义反滤镜

我该如何在Symfony2 / Doctrine中创建自定义EntityManager?

symfony2在自定义批注中获取paramConverter值

在symfony2中为应用程序加载自定义配置文件