承接 tangoman/repository-helper 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

tangoman/repository-helper

Composer 安装命令:

composer require tangoman/repository-helper

包简介

Symfony Repository Helper

README 文档

README

TangoMan Repository Helper provides trait with useful functions for your repositories.

Installation

Step 1: Download the Bundle

Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:

$ composer require tangoman/repository-helper

This command requires you to have Composer installed globally, as explained in the installation chapter of the Composer documentation.

Usage

Inside your repository

Add "use" statement just like when you're using a trait.

<?php

namespace FoobarBundle\Repository;

use Doctrine\ORM\EntityRepository;
use TangoMan\RepositoryHelper\RepositoryHelper;

/**
 * Class FoobarRepository
 */
class FoobarRepository extends EntityRepository
{
    use RepositoryHelper;
}

Inside your controller

use Symfony\Component\HttpFoundation\Request;

class FoobarController extends Controller
{
    /**
     * @Route("/")
     */
    public function indexAction(Request $request)
    {
        // Show searchable, sortable, paginated user list
        $em = $this->get('doctrine')->getManager();
        $foobars = $em->getRepository('AppBundle:Foobar')->findByQuery($request);

        return $this->render(
            'admin/foobar/index.html.twig',
            [
                'foobars' => $foobars,
            ]
        );
    }

Inside your views

Search Form

<label for="inputUser">User</label>
<input type="text" name="user-username" id="inputUser" class="form-control"
    value="{{ app.request.get('user-username')|join(', ') }}"/>

Will generate this: .../admin/posts/?user-username=admin

Order Link

<th class="{{ app.request.query.get('order') == 'user-username' ? app.request.query.get('way', 'ASC') }}">
    <a href="{{ path('app_admin_post_index', app.request.query.all|merge({
        'page'  : 1,
        'order' : 'user-username',
        'way'   : app.request.query.get('order') == 'user-username'
        and app.request.query.get('way', 'ASC') == 'ASC' ? 'DESC' : 'ASC'})) }}">
        User
    </a>
</th>

Will generate this: .../admin/posts/?page=1&order=user-username&way=ASC

Helper Public Methods

function description parameters return
getTableName() Returns current table name n/a string
countBy($criteria = []) Returns element count, filtered by given criteria array integer
distinct($property, $criteria = []) Lists distinct items from desired column, filtered by given criteria string, array array
findAllPaged($page = 1, $limit = 10, $criteria = []) Returns X results with pagination, starting from given page, filtered by given criteria integer, integer, array (object)Paginator
findByQuery(Request $request, $criteria = []) Returns query result with pagination, filtered by given criteria (object)Request, array (object)Paginator
findByQueryScalar(Request $request, $criteria = []) Return query as scalar result with pagination, filtered by given criteria (object)Request, array (object)Paginator
export(Request $request, $criteria = []) Return all objects as scalar result, filtered by given criteria (object)Request, array array

Query Parameters

parameter type value
order string switch-entity-property
way string (ASC/DESC)
limit integer [1-9]+\d?
page integer [1-9]+\d?
join string switch-entity-property

Switches

Switch values for mode/operator/action

switch mode description
a andWhere andWhere
b search boolean
c order count
e search exactMatch
l search like
n search notNull
o orWhere orWhere
p order property
r order orderBy
s search simpleArray

Error

When symfony raises following QueryException exception:

[Semantical Error] line X, col XX near 'foo LIKE': Error: Invalid PathExpression. Must be a StateFieldPathExpression.

It means that you have an error inside your form: <input name="foo-bar">, attribute doesn't target appropriate joined entity.

Try <input name="foo-bar-title">, or <input name="bar-title">, TangoMan Repository Helper will automatically handle the join.

Note

If you find any bug please report here : Issues

License

Copyright (c) 2018 Matthias Morin

License Distributed under the MIT license.

If you like TangoMan Repository Helper please star! And follow me on GitHub: TangoMan75 ... And check my other cool projects.

Matthias Morin | LinkedIn

统计信息

  • 总下载量: 149
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 0
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2017-08-09

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固