datatables

其他类别 2025-08-20

php的datatables库

使用我们的Lightning-Fast PHP库轻松地简化了您的datatables服务器端处理,从而无缝简化了您的工作流程。现场演示

特征

  • 便于使用。仅使用几行代码生成JSON。
  • 具有关闭功能的可编辑列。
  • 支持自定义过滤器。
  • 可以处理最复杂的查询。
  • 支持本机PHP的MySQL和SQLite。
  • 与:
    • 拉拉维尔
    • Codeigniter 3
    • Codeigniter 4
    • phalcon 3+
    • Prestashop
    • Postgresql

安装

注意: 2.0+版本需要PHP 7.1.3+(支持版本)

安装图书馆的推荐方法是与作曲家

如果您尚未开始使用作曲家,我强烈建议您使用它。

将一个名为composer.json的文件放在您项目的根源上,其中包含此信息:

datatables": "2.*" } }">
 {
    "require": {
       "ozdemir/ datatables ": "2.*"
    }
}

然后运行:

 composer install

或刚运行:

 composer require ozdemir/ datatables

将自动加载器添加到您的项目中:

    

    require_once ' vendor/autoload.php ' ;

您现在准备开始使用datatables PHP库。

datatables ; use Ozdemir datatables DBMySQL; $config = [ 'host' => 'localhost', 'port' => '3306', 'username' => 'homestead', 'password' => 'secret', 'database' => 'sakila' ]; $dt = new datatables ( new MySQL($config) ); $dt->query('Select film_id, title, description from film'); echo $dt->generate();">
    
    require_once ' vendor/autoload.php ' ;

    use Ozdemir  datatables  datatables ;
    use Ozdemir  datatables  DB  MySQL ;

    $ config = [ ' host '     => ' localhost ' ,
                ' port '     => ' 3306 ' ,
                ' username ' => ' homestead ' ,
                ' password ' => ' secret ' ,
                ' database ' => ' sakila ' ];

    $ dt = new datatables ( new MySQL ( $ config ) );

    $ dt -> query ( ' Select film_id, title, description from film ' );

    echo $ dt -> generate ();

如果您使用的是PHP框架,例如CodeIgniter或Laravel,则可以使用相关的数据库适配器。

datatables ; use Ozdemir datatables DBCodeigniter4Adapter; class Home extends BaseController { public function index() { return view('index'); } public function ajax() { // CI 4 builder class $db = Database::connect(); $builder = $db->table('Track'); $builder->select('TrackId, Name, UnitPrice'); // datatables Php Library $ datatables = new datatables (new Codeigniter4Adapter); // using CI4 Builder $ datatables ->query($builder); // alternatively plain sql // $ datatables ->query('Select TrackId, Name, UnitPrice from Track'); return $this->response->setJSON($ datatables ->generate()->toJson()); } }">
 // Codeigniter 4 Example



namespace App  Controllers ;

use Config  Database ;
use Ozdemir  datatables  datatables ;
use Ozdemir  datatables  DB  Codeigniter4Adapter ;

class Home extends BaseController
{
    public function index ()
    {
        return view ( ' index ' );
    }

    public function ajax ()
    {
        // CI 4 builder class
        $ db = Database:: connect ();

        $ builder = $ db -> table ( ' Track ' );
        $ builder -> select ( ' TrackId, Name, UnitPrice ' );

        // datatables Php Library
        $ datatables = new datatables ( new Codeigniter4Adapter );

        // using CI4 Builder
        $ datatables -> query ( $ builder );

        // alternatively plain sql
        // $ datatables ->query('Select TrackId, Name, UnitPrice from Track');

        return $ this -> response -> setJSON ( $ datatables -> generate ()-> toJson ());
    }
}
datatables ; use Ozdemir datatables DBLaravelAdapter; Route::get('/ajax/laravel', function () { $dt = new datatables (new LaravelAdapter); $dt->query( Track::query() ->select([ 'TrackId', 'Track.Name', 'Title as Album', 'MediaType.Name as MediaType', 'UnitPrice', 'Milliseconds', 'Bytes', ]) ->join('Album', 'Album.AlbumId', 'Track.AlbumId') ->join('MediaType', 'MediaType.MediaTypeId', 'Track.MediaTypeId') ); // same as the previous example, sql statement can be used. return $dt->generate(); }); ">
 // Laravel Example


// routes/web.php 

use Ozdemir  datatables  datatables ;
use Ozdemir  datatables  DB  LaravelAdapter ;

Route:: get ( ' /ajax/laravel ' , function () {

    $ dt = new datatables ( new LaravelAdapter );

    $ dt -> query (
      Track:: query ()
          -> select ([
              ' TrackId ' ,
              ' Track.Name ' ,
              ' Title as Album ' ,
              ' MediaType.Name as MediaType ' ,
              ' UnitPrice ' ,
              ' Milliseconds ' ,
              ' Bytes ' ,
          ])
          -> join ( ' Album ' , ' Album.AlbumId ' , ' Track.AlbumId ' )
          -> join ( ' MediaType ' , ' MediaType.MediaTypeId ' , ' Track.MediaTypeId ' )
    ); // same as the previous example, sql statement can be used.

    return $ dt -> generate ();
});

方法

这是可用公共方法的列表。

需要查询($查询)

  • 设置SQL查询

需要()

  • 运行查询并构建输出
  • 返回输出为JSON
  • 与生成() - > tojson()相同

tojson()

  • 返回输出为JSON
  • 应在生成后调用()

toarray()

  • 返回输出作为数组
  • 应在生成后调用()

添加($ column,function($ row){})

  • 添加用于自定义使用的额外列

编辑($ column,function($ row){})

  • 允许列编辑

过滤器($ column,function(){})

  • 允许自定义过滤
  • 它具有以下方法
    • 逃生($ value)
    • searchValue()
    • DefaultFilter()
    • 在($ low,$ high)之间
    • 其中($ array)
    • 大街($ value)
    • Lessthan($ value)

hide($ linters)

  • 从输出中删除列
  • 当您只需要使用add()或edit()方法中的数据时,这很有用。

setDistInctresponsefrom($ linter)

  • 用给定的列名执行查询,并使用不同的数据键将返回的数据添加到输出中。

setDistInctresponse($输出)

  • 使用不同的数据键将给定数据添加到输出中。

getColumns()

  • 返回列名(出于开发目的)

getquery()

  • 返回由库创建的SQL查询字符串(出于开发目的)

例子

datatables ; use Ozdemir datatables DBSQLite; $path = __DIR__ . '/../path/to/database.db'; $dt = new datatables ( new SQLite($path) ); $dt->query('Select id, name, email, age, address, plevel from users'); $dt->edit('id', function($data){ // return a link. return "edit"; }); $dt->edit('email', function($data){ // masks email : mail@mail.com => m***@mail.com return preg_replace('/(?<=.).(?=.*@)/u','*', $data['email']); }); $dt->edit('address', function($data){ // checks user access. $current_user_plevel = 4; if ($current_user_plevel > 2 && $current_user_plevel > $data['plevel']) { return $data['address']; } return 'you are not authorized to view this column'; }); $dt->hide('plevel'); // hides 'plevel' column from the output $dt->add('action', function($data){ // returns a link in a new column return "edit"; }); $dt->filter('age', function (){ // applies custom filtering. return $this->between(15, 30); }); echo $dt->generate()->toJson(); // same as 'echo $dt->generate()';">
    
    require_once ' vendor/autoload.php ' ;

    use Ozdemir  datatables  datatables ;
    use Ozdemir  datatables  DB  SQLite ;

    $ path = __DIR__ . ' /../path/to/database.db ' ;
    $ dt = new datatables ( new SQLite ( $ path ) );

    $ dt -> query ( ' Select id, name, email, age, address, plevel from users ' );

    $ dt -> edit ( ' id ' , function ( $ data ){
        // return a link.
        return " id ' ] . " '>edit " ;
    });

    $ dt -> edit ( ' email ' , function ( $ data ){
        // masks email : mail@mail.com => m***@mail.com
        return preg_replace ( ' /(?<=.).(?=.*@)/u ' , ' * ' , $ data [ ' email ' ]);
    });

    $ dt -> edit ( ' address ' , function ( $ data ){
        // checks user access.
        $ current_user_plevel = 4 ;
        if ( $ current_user_plevel > 2 && $ current_user_plevel > $ data [ ' plevel ' ]) {
            return $ data [ ' address ' ];
        }

        return ' you are not authorized to view this column ' ;
    });
    
    $ dt -> hide ( ' plevel ' ); // hides 'plevel' column from the output

    $ dt -> add ( ' action ' , function ( $ data ){
        // returns a link in a new column
        return " id ' ] . " '>edit " ;
    });

    $ dt -> filter ( ' age ' , function (){
        // applies custom filtering.
        return $ this -> between ( 15 , 30 );
    });

    echo $ dt -> generate ()-> toJson (); // same as 'echo $dt->generate()'; 

路线图

  • 每个班级更好的测试套件
  • 改善PHP框架的集成

要求

作曲家
datatables > 1.10
PHP> 7.1.3

执照

版权(c)2015Yusufözdemír,根据MIT许可发布

如果您喜欢图书馆,请考虑给星星。

下载源码

通过命令行克隆项目:

git clone https://github.com/n1crack/datatables.git