mpetrini/doctrinedatatable

jQuery Datatable ServerSide 和 Doctrine ORM 之间的桥梁

v0.9.0 2021-09-22 07:49 UTC

This package is auto-updated.

Last update: 2024-09-22 12:17:15 UTC


README

Latest Stable Version Project badge Project badge Project badge Project badge License

DoctrineDatatable

深度基于 Doctrine2 包和 jQueryDatatable。DoctrineDatatable 旨在减轻您在 Web 应用程序内开发表格的痛苦。

要求

DoctrineDatatable 需要

安装

composer require mpetrini/doctrinedatatable

使用方法

基本使用

统一过滤

<?php

use Doctrine\Tests\Models\CMS\CmsUser;
use DoctrineDataTable\Column;
use DoctrineDataTable\Datatable;

$em = /** instanceof Doctrine\ORM\EntityManager */;

$datatable = new Datatable(
    $em->createQueryBuilder()
        ->select('u')
        ->from(CmsUser::class, 'u'),
    // Primary key of your datatable (Primary key of your entity most of the time)
    'id',
    array(
        new Column(
            // alias
            'name',
            // attribute name with table alias
            'u.name',
            // Where part of the DQL
            'u.name LIKE :global',
            // EQ / GTE / GT / LT / LIKE ...
            '%:global%'
        ),
        new Column(
            'status',
            'u.status',
            // Where part of the DQL
            'u.status LIKE :global',
            // EQ / GTE / GT / LT / LIKE ...
            '%:global%'
        ),
    )
);

echo json_encode(
    $datatable->setGlobalSearch(true)
        ->get($_GET)
);

按列过滤

<?php

use Doctrine\Tests\Models\CMS\CmsUser;
use DoctrineDataTable\Column;
use DoctrineDataTable\Datatable;

$em = /** instanceof Doctrine\ORM\EntityManager */;

$datatable = new Datatable(
    $em->createQueryBuilder()
        ->select('u')
        ->from(CmsUser::class, 'u'),
    // Primary key of your datatable (Primary key of your entity most of the time)
    'id',
    array(
        new Column(
            // alias
            'name',
            // attribute name with table alias
            'u.name',
            // Where part of the DQL
            'u.name LIKE :name',
            // EQ / GTE / GT / LT / LIKE ...
            '%:name%'
        ),
        new Column(
            'status',
            'u.status'
            // Where And Resolve parts are optional if the column isn't filtered
        ),
    )
);

echo json_encode($datatable->get(
    $_GET
));

CSV 导出

<?php

use Doctrine\Tests\Models\CMS\CmsUser;
use DoctrineDataTable\Column;
use DoctrineDataTable\Datatable;

$em = /** instanceof Doctrine\ORM\EntityManager */;

$datatable = new Datatable(
    $em->createQueryBuilder()
        ->select('u')
        ->from(CmsUser::class, 'u'),
    'id',
    array(
        new Column(
            'name',
            'u.name',
            'u.name LIKE :name',
            '%:name%'
        ),
        new Column(
            'status',
            'u.status'
        ),
    )
);

echo $datatable->export();

示例

查看示例目录。

许可

查看LICENSE.md文件。