Server-side handler of DataTables Jquery Plugin for Laravel 4

Overview

Project is not being maintained actively.

You will most likely find a better more actively maintained fork here https://github.com/yajra/laravel-datatables

If you have issues please try and fix them and we will pull the changes if we can verify they work. That being said this project lacks automatic testing so it has become a difficult project to maintain. Please let us know if you are interested in adopting and maintaining this project, it is still pretty useful. 60% of the time, it works every time.

Datatables Bundle for Laravel 4

About

This bundle is created to handle the server-side processing of the DataTables Jquery Plugin (http://datatables.net) by using Eloquent ORM or Fluent Query Builder.

Feature Overview

  • Supporting Eloquent ORM and Fluent Query Builder
  • Adding or editing the contents of columns and removing columns
  • Templating new or current columns via Blade Template Engine
  • Customizable search in columns

Installation

Require bllim/datatables in composer.json and run composer update.

{
    "require": {
        "laravel/framework": "4.0.*",
        ...
        "bllim/datatables": "*"
    }
    ...
}

Composer will download the package. After the package is downloaded, open app/config/app.php and add the service provider and alias as below:

'providers' => array(
    ...
    'Bllim\Datatables\DatatablesServiceProvider',
),



'aliases' => array(
    ...
    'Datatables'      => 'Bllim\Datatables\Facade\Datatables',
),

Finally you need to publish a configuration file by running the following Artisan command.

$ php artisan config:publish bllim/datatables

Usage

It is very simple to use this bundle. Just create your own fluent query object or eloquent object without getting results (that means don't use get(), all() or similar methods) and give it to Datatables. You are free to use all Eloquent ORM and Fluent Query Builder features.

Some things you should know:

  • When you call the select method on Eloquent or Fluenty Query, you choose columns.
  • Modifying columns
    • You can easily edit columns by using edit_column($column, $content)
    • You can remove any column by using remove_column($column)
    • You can add columns by using `add_column($column_name, $content, $order)
    • You can use the Blade Template Engine in your $content values.
    • You may pass a function as the $content to the add_column or edit_column calls. The function receives a single parameter: the query row/model record. (see Example 2)
  • The column identifiers are set by the returned array.
    • That means, for posts.id the relevant identifier is id, and for owner.name as ownername it is ownername
  • You can set the "index" column (http://datatables.net/reference/api/row().index()) using set_index_column($name)
  • You can add class (DT_RowClass) to each row using set_row_class($content) function.
  • You can add jquery's data (DT_RowData) to each row using set_row_data($name,$content) function.
  • You can add customized search filters for each column to override the default search functionality
  • You can call make(true) to return an array of objects instead of an array of arrays. (see Example 4)

Examples

Example 1: Simple use

$posts = Post::select(array('posts.id','posts.name','posts.created_at','posts.status'));

return Datatables::of($posts)->make();

Example 2: Adding and editing columns

$place = Place::left_join('owner','places.author_id','=','owner.id')
   ->select(array('places.id','places.name','places.created_at','owner.name as ownername','places.status'));


return Datatables::of($place)
    ->add_column('operations', '<a href="{{ URL::route( \'admin.post\', array( \'edit\',$id )) }}">edit</a>
                    <a href="{{ URL::route( \'admin.post\', array( \'delete\',$id )) }}">delete</a>
                ')
    ->edit_column('status', '{{ $status ? 'Active' : 'Passive' }}')
    ->edit_column('ownername', function($row) {
        return "The author of this post is {$row->ownername}";
    })
    ->remove_column('id')
    ->make();

Notice: If you use double quotes while assigning the $content in an add_column or edit_column call, you should escape variables with a backslash (\) to prevent an error. For example:

edit_column('id', "{{ \$id }}") .

Example 3: Using filter_column

$clients = Client::select(array(
		'Client.id',
		DB::raw('CONCAT(Client.firstname," ",Client.lastname) as ClientName'),
		'Client.email',
		'Client.code',
		'Client.updated_at',
		'Client.isActive',
		'Language.name as LanguageName',
	))
	->leftJoin('Language', 'Client.Language_id', '=', 'Language.id')
	->where('isDeleted', '!=', '1');

return Datatables::of($clients)
		->filter_column('id', 'where', 'Client.id', '=', '$1')
		->filter_column('code', 'where', 'Client.code', '=', DB::raw('UPPER($1)'))
		->filter_column('LanguageName', 'whereIn', 'Language.name', function($value) { return explode(',',$value); })
		->filter_column('updated_at', 'whereBetween', 'Client.updated_at', function($value) { return explode(',',$value); }, 'and')
		->edit_column('isActive', '@if($isActive) <span class="label label-success">Active</span> @else <span class="label label-danger">Inactive</span> @endif')
		->make();

Notes on filter_column:

Usage: filter_column ( $column_name, $method, $param_1, $param_2, ..., $param_n )

  • $column_name - the column name that search filter is be applied to
  • $method - can be any of QueryBuilder methods (where, whereIn, whereBetween, having etc.).
    • Note: For global search these methods are automaticaly converted to their "or" equivalents (if applicable, if not applicable, the column is not searched).
    • If you do not want some column to be searchable in global search, set the last parameter to "and" (see line 17 in example above). Doing this, the filter cannot be switched into its "or" equivalent and therefore will not be searched in global search .
  • $param_1 ... $param_n - these are parameters that will be passed to the selected where function ($method). Possible types:
    • string
    • DB::raw() - The DB::raw() can output literaly everything into the query. For example, subqueries or branching if you need some really sophisticated wheres.
    • function - or any other callable
    • array of any of the above
  • The search value is passed to the query by the string $1 placed anywhere in parameters. If a callable (function) is used the searched value is passed to callable as first parameter the first parameter (again see line 17).
    • The callable must return a value that will be passed to the QueryBuilder's function.

Example 4: Returning an array of objects

$posts = Post::select(array('posts.id','posts.name','posts.created_at','posts.status'));

return Datatables::of($posts)->make(true);

This returns a JSON array with data like below:

data: {
    {
        id: 12,
        name: 'Dummy Post',
        created_at: '1974-06-20 13:09:51'
        status: true
    }
    {
        id: 15,
        name: 'Test post please ignore',
        created_at: '1974-06-20 13:15:51',
        status: true
    }
}

Example 5: DT_RowID, DT_RowClass and DT_RowData

$todo = ToDoList::select(array('todo.id','todo.name','todo.created_at','todo.status'));

return Datatables::of($todo)
    ->set_index_column('id')
    ->set_row_class('@if($status=="done") success @endif')
    ->set_row_data('created_at','{{$created_at}}')
    ->make();

Example 6: Advanced usage of dataFullSupport

To better utilize dataTables mData (1.9), now columns.data (1.10) feature you may enable dataFullSupport by either setting it to true in the config file, or passing true to the second initialization argument Datatables::of($query, true)

Creating a table with a searchable and sortable joined table:

//html
<table id="user-list"></table>
//script.js
$("#users-list").dataTable({
        "processing": true,
        "serverSide": true,
        "ajax": "/api/user/datatables",
        "order": [[1,'desc']],
		"columnDefs": [ { //this prevents errors if the data is null
			"targets": "_all",
			"defaultContent": ""
		} ],
        "columns": [
            //title will auto-generate th columns
            { "data" : "id",               "title" : "Id", "orderable": true, "searchable": false },
            { "data" : "profile.last_name","title" : "Name", "orderable": true, "searchable": true },
            { "data" : "username",         "title" : "Username", "orderable": true, "searchable": true },
            { "data" : "email",            "title" : "Email", "orderable": true, "searchable": true },
            { "data" : "created_date",     "title" : "Created", "orderable": true, "searchable": true },
        ]
    });
$users = Models\User::select()->ModelJoin('profile');
        return $dataTables = Datatables::of($users)
            ->filter_column('profile.last_name','where',\DB::raw('CONCAT(profile.last_name,\' \',profile.first_name)'),'LIKE','$1')
            ->filter_column('created_at','where','users.created_at','LIKE','$1')
            //for the blade template only the array data results is provided, it is `extracted` into the template
            ->edit_column('profile.last_name', '{{ $profile["first_name"]." ".$profile["last_name"] }}')
            ->edit_column('created_at', function($result_obj) {
                //in a callback, the Eloquent object is returned so carbon may be used
                return $result_obj->created_at->format('d/m/Y - h:ia');
            })
            ->add_column('manage', '<a href="/user/edit/{{$id}}" >Edit</a>', 3)
            ->remove_column('profile.photo_id')
            ->set_index_column('row-{{ $id }}')
            ->make();
//helper scope method in base Model class
    public function scopeModelJoin($query, $relation_name, $operator = '=', $type = 'left', $where = false) {
        $relation = $this->$relation_name();
        $table = $relation->getRelated()->getTable();
        $one = $relation->getQualifiedParentKeyName();
        $two = $relation->getForeignKey();

        if (empty($query->columns)) {
            $query->select($this->getTable().".*");
        }

        //$join_alias = $table;
        $prefix = $query->getQuery()->getGrammar()->getTablePrefix();
        $join_alias = $relation_name;
        foreach (\Schema::getColumnListing($table) as $related_column) {
            $query->addSelect(\DB::raw("`$prefix$join_alias`.`$related_column` AS `$join_alias.$related_column`"));
        }
        $two = str_replace($table . ".", $join_alias . ".", $two);
        return $query->join("$table AS $prefix$relation_name", $one, $operator, $two, $type, $where); //->with($relation_name);
    }

Notes on columns.data:

  • When using the columns.data option the order the data is returned in doesn't matter.
  • You may return extra rows that you use in some tables, and ones you don't without needing to worry about ignoring them.
  • When the data is returned within enbeded arrays, datatables lets you access it using dot notation. This allows the columns.data element to address items in your table. The values of the data items are expected to match the columns (or aliases) of the table. For example, if you sort by "profile.last_name" it will use that to sort by the last_name column in the "profiles" table, so make sure that table is joined so the reference exists.
  • If you don't do a direct join you can't sort or search those columns so make sure to set those options to false in the columns array
  • If you eager load the data via Eloquent, you will still get those items back and they may be edit via edit_column just the same without needing to alias the names.

License: Licensed under the MIT License

Comments
  • Datatables 1.10+ update, backwards compatibile

    Datatables 1.10+ update, backwards compatibile

    I created this after reading PR #107 and Prateem proposed changes.

    I belive my proposal is better quality. The code of "ordering" and "filtering" function now uses new data format. The old format is translated to new format in object constructor. The "output" function automaticaly decides what format should be returned.

    This PR was tested, works fine for all types of ordering and filtering. I spend few hours checking this PR using compatibility mode enabled and disabled, worked fine in both ways so I'm pretty sure it's fine.

    Edit: I forgot to mention I made some small changes to "filtering" nad "clean_columns" functions to make the code smaller. This changes nothing, only make "filtering" function shorter.

    opened by ktunkiewicz 11
  • error adding clause

    error adding clause "having" to a query

    Hi, Im trying to pass a query to Datatables::of($data) but I get an error.The var $data contain a query with having clause , at the moment I get an error due the filter I have added to it , Eg. having id =?. The error is located in the query that contains this part of code -> SQL: select count(*) as aggregate from (select '1' as row from table t1 inner join table2 t2 on t1.id=t2.id where field=? having id=?) I easly see the error is due to the missing id on the select fields.

    Is there any way to perform a query using having ??

    Notice that before I pass the query to the method of($data) I test the query with $data->get() and it retrieves the values as expected.

    Thanks

    opened by ghost 10
  • offset not found issue on add_column

    offset not found issue on add_column

    after an upgrade, I get the error message when doing global search on virtually added column with add_column

    the problem is in Databases.php file line 560 - index is being requested which should not!

    somebody has to override if ($this->input['columns'][$i]['orderable'] == "true") when using add_column function and not using the ordering, or offsets must be calculated correctly and filtering not used on them

    bug dissapears when explicitely initializing

                                "columnDefs": [
                                  { "orderable": false, "targets": 3 }
                                ],
    
    opened by Ulterior 10
  • Master phazei

    Master phazei

    Added a new dataFullSupport option in the off chance that there' s some use case that new new changes fixed, shouldn't effect anyone now.

    Also noticed the composer.json has 5.3 support, so changed the [] array notation to array() in a few spots.

    opened by phazei 9
  • filter_column - versatile filtering method

    filter_column - versatile filtering method

    Hi, this is my first pull request so please be forgiving.

    filter_column is an aproach to more versatile filtering than just LIKE %...%. This function uses QueryBuilder's builtin functions by simply passing all parameters to the choosen QueryBuilder method.

    The syntax:

    filter_column ( $column_name, $method, $param_1, $param_2 ... $param_n )

    Tips:

    • $column_name - the column name that search filter is be applied to
    • $method - can be any of QueryBuilder methods (where, whereIn, whereBetween, having etc.).
      • Note: For global search these methods are automaticaly converted to their "or" equivalents (if applicable, if not applicable, the column is not searched).
      • If you do not want some column to be searchable in global search set the last where's parameter to "and" (see line 17 in example above). Doing this way the filter cannot be switched into its "or" equivalent therefore will not be searched in global search .
    • $param_1 ... $param_n - these are parameters that will be passed to the selected where function. Possible types:
      • string
      • DB::raw() - The DB::raw() can output literaly everything into the query, for example subqueries or branching if you need some really sophisticated wheres.
      • function - or any other callable
      • array of any above
    • the search value is passed to the query by $1 string placed anywhere in parameters. If callable (function) is used the searched value is passed to callable as first parameter. The callable must returns value that will be passed to the QueryBuilder's function.

    Examples:

    In my projects I often use filtering/searching on datatables, so I need more universal aproach of filtering the query results. For example if i need to search for an "Order" with "id = 123" i would like to see only one order as a result, not every result that has "123" in it's id (like 1234, 5123, 1230 etc.) This can be made like this:

    simple search

    searching for value: 123

    code:

    $posts= Post::select(array('id','name','content'));
    return Datatables::of($orders)
      ->filter_column('id', 'where', 'id', '=', '$1')
      ->make();
    

    this translates to QueryBuilder's where ('id', '=', 123) so the result SQL is WHERE id = 123

    Often the data you want to search for must be somehow prepared. You can use DB::raw() to do this. The DB::raw() can output literaly everything into the query, for example subqueries or branching if you need some really sophisticated wheres.

    simple use of DB:raw()

    searching for value: FOo code:

    $books= Book::select(array('id','code','name'));
    return Datatables::of($books)
      ->filter_column('code', 'where', 'code', '=', DB::raw('UPPER($1)'))
      ->make();
    

    this translates to QueryBuilder's where ('code', '=', DB::raw('UPPER($1)')) so the result SQL is WHERE code = UPPER("FOo")

    Some QueryBuilder methods need an array as parameter, this can be done using inline function. Also if you need do some more complicated input data filtering / parsing this can be done inside function and then returned into search query.

    using callable

    searching for value: Cat,Dog,Elephant

    code:

    $friends = Friend::left_join('pets','friend.pets_id','=','pets.id')->select(array('friend.id','friend.name','pets.name as petsName'));
    
    return Datatables::of($friends)
      ->filter_column('petsName', 'whereIn', 'pets.name', function($value) { return explode(',',$value); })
      ->make();
    

    this translates to QueryBuilder's whereIn ('pets.name', array( 'Cat', 'Dog', 'Elephant' ) ) so the result SQL is WHERE pets.name IN = ( "Cat", "Dog", "Elephant" )

    opened by ktunkiewicz 8
  • reload/refresh dataTable not work

    reload/refresh dataTable not work

    I wan to reload my data table when my another function call success. i write reload code but bllim not support reload

    my code

    <script>
    
    
        function statusFunction(id,str) {
    
    
            $.ajax({
                url: "user/statusChange",
                type: "post",
                data: { id:id ,currentStatus:str},
                success: function (msg) {
                    //$("#result").html(responseText);
    
                    if(msg=='success')
                    {
                        $('#articles').DataTable().ajax.reload();
    
                    }
    
    
    
    
    
    
                }
            });
        }
    
        $('#articles').dataTable( {
            "bProcessing": true,
            "bServerSide": true,
            "sScrollX": "600",
            "bScrollCollapse": true,
            "sAjaxSource": "user/contentajax",
            "aaSorting": [[ 0, "desc" ]],
            "aoColumns": [
                { 'sWidth': '60px' },
                { 'sWidth': '180px', 'sClass': 'center' },
                { 'sWidth': '180px', 'sClass': 'center' },
                { 'sWidth': '100px', 'sClass': 'center' },
                { 'sWidth': '100px', 'sClass': 'center' },
                { 'sWidth': '100px', 'sClass': 'center' },
                { 'sWidth': '60px', 'sClass': 'center' },
                { 'sWidth': '60px', 'sClass': 'center' }
            ],
            "sPaginationType": "bootstrap"
        });
    
    </script>
    
    opened by amarkotha366 7
  • count query is very slow ( got a solution though )

    count query is very slow ( got a solution though )

    Hey there,

    I noticed two things on the count query, one is that the select stays in tact while you are only creating a count, thats extremely slow. I understand why you did it, to make all the sql specific stuf still working. Only.... its slow so ive got a little fix for that. And you execute the count query twice. And allot of times the count query is the same ( in my application its always the same ) so ive added a remember chain to it

        private function count($count  = 'count_all')
        {   
    
            //Get columns to temp var.
            if($this->query_type == 'eloquent') {
                $query = $this->query->getQuery();
                $connection = $this->query->getModel()->getConnection()->getName();
            }
            else {
                $query = $this->query;
                $connection = $query->getConnection()->getName();
            }
    
            // little magic to speed things up ( notice the clone, so it wont interfere with the rest of the code )
            $myQuery = clone $query;
            $myQuery->select( DB::Raw("'1' as row") );
    
            // notice that im using myQuery instead of query and ive added the rememeber to the mix
            $this->$count = DB::connection($connection)
            ->table(DB::raw('('.$myQuery->toSql().') AS count_row_table'))
            ->setBindings($myQuery->getBindings())->remember(1)->count();
    
        }
    
    opened by reneweteling 7
  • Edited and removed columns aren't reflected in filter results

    Edited and removed columns aren't reflected in filter results

    In my circumstance I used the following code, but had issues when searching on the Trailer # in the first table, and the Date In on both tables.

            $transactions = Transaction::select('id', 'cust_id', 'car_id');
    
            $transactions = DB::table('transactions')
                ->leftJoin('customers','transactions.cust_id','=','customers.id')
                ->leftJoin('cars','transactions.car_id','=','cars.id')
                ->leftJoin('employees','transactions.emp_id','=','employees.id');
    
            if ($type == "estimates")
                $transactions->where('transactions.estimate','=',true);
            else if ($type == "invoices")
                $transactions->where('transactions.estimate','=',false);
    
            $transactions->select('customers.company', 'customers.first_name', 'customers.last_name', 'cars.truck_num', 'cars.trailer_num', 'transactions.date_in', 'transactions.id', 'transactions.invoice_num');
    
            $data = Datatables::of($transactions)
                ->add_column('controls',
                    '<span id="{{$id}}" class="controls">'.
                    '<a href="{{ URL::route(\'transactions.show\', [$id]) }}"><i class="glyphicon glyphicon-file"></i></a>'.
                    ($type == "estimates" ? 
                        '<a href="{{ URL::route(\'transactions.edit\', [$id]) }}"><i class="glyphicon glyphicon-pencil"></i></a>'.
                        '<a href="{{ URL::route(\'transactions.convert\', [$id]) }}"><i class="glyphicon glyphicon-arrow-right"></i></a>' : '').
                    '</span>'
                    )
                ->edit_column('first_name','{{$first_name}} {{$last_name}}')
                ->edit_column('date_in','{{ FormatController::datetime($date_in) }}')
                ->remove_column('id')
                ->remove_column('last_name')
                ->remove_column('make')
                ->remove_column('model')
                ->remove_column(($type == "estimates" ? 'invoice_num': ''))
                ->make();
            return $data;
    

    dt1


    After some debugging I found that when I commented out the adds/edits/deletions on columns I could see what I was really searching on.

            $data = Datatables::of($transactions)
                // ->add_column('controls',
                //  '<span id="{{$id}}" class="controls">'.
                //  '<a href="{{ URL::route(\'transactions.show\', [$id]) }}"><i class="glyphicon glyphicon-file"></i></a>'.
                //  ($type == "estimates" ? 
                //      '<a href="{{ URL::route(\'transactions.edit\', [$id]) }}"><i class="glyphicon glyphicon-pencil"></i></a>'.
                //      '<a href="{{ URL::route(\'transactions.convert\', [$id]) }}"><i class="glyphicon glyphicon-arrow-right"></i></a>' : '').
                //  '</span>'
                //  )
                // ->edit_column('first_name','{{$first_name}} {{$last_name}}')
                // ->edit_column('date_in','{{ FormatController::datetime($date_in) }}')
                // ->remove_column('id')
                // ->remove_column('last_name')
                // ->remove_column('make')
                // ->remove_column('model')
                // ->remove_column(($type == "estimates" ? 'invoice_num': ''))
                ->make();
            return $data;
    

    dt2


    I found that I could temporarily fix my issue by moving the columns I removed from the dataset to the end of the array so that the ones I did use would be able to be filtered.

    $transactions->select('customers.company', 'customers.first_name', 'customers.last_name', 'cars.truck_num', 'cars.trailer_num', 'transactions.date_in', 'transactions.id', 'transactions.invoice_num');
    

    I also noticed that if I made this latest change and left the adds/edits/deletions commented out my table still showed what it was really filtering on, the original data.

    dt3

    I haven't tested the issue for added columns but I assume they aren't searchable as well.

    enhancement 
    opened by desmondw 7
  • SQL Error on Column Filter with Joined Table

    SQL Error on Column Filter with Joined Table

    Hello, I get a SQL error during a column filtering in a Joined Datatables. I founded that the problem is in the function filtering() of Datatables.php around the line 428.

    It is getting the name of the column with the declaration like: tablejoined.column as newcolumn LIKE .......

    I fixed it in a simple way just using the same code as the normal filter using

    $copy_this = $this; preg_match('#^(\S_?)\s+as\s+(\S_?)$#si',$copy_this->columns[$i],$matches); $column = empty($matches) ? $copy_this->columns[$i] : $matches[1];

    Hope this help someone and you can fix it in the next release. So I can update it without problem.

    Bye bye Andrea

    opened by AndreaScotti 7
  • Add better support for mData.  Now it will properly use the dot notated ...

    Add better support for mData. Now it will properly use the dot notated ...

    ...data names for the columns if mDataSupport is enabled. Dot notated columns can be edited and added via the dot notation, and eager joined relations are properly returned with dot notation. If any table column names are returned with dot aliases, they are converted into the dot notation array.

    opened by phazei 6
  • 1.4 breaks diplay

    1.4 breaks diplay

    Upon an update all of our Blim datatables have the below error now: Any suggestions?

    error: {type:ErrorException, message:Undefined offset: 1,…} file: "/var/www/SynIR/vendor/bllim/datatables/src/Bllim/Datatables/Datatables.php" line: 75 message: "Undefined offset: 1" type: "ErrorException" ConsoleSearchEmulationRendering

    opened by punkrokk 6
  • Location with Adresse and Zip Code

    Location with Adresse and Zip Code

    Hello,

    I actually use Location function to display my maps but i would like to map like :

    Mapper::location($stade->adresse_stade , $stade->zip_code)->map();

    Because if i put only the adresse like for exemple : Avenue du general Leclerc it's display my the result but the adresse is not where i'm looking for it's showing me the same adresse but in another country !

    When i tried Mapper::location($stade->adresse_stade , $stade->zip_code)->map(); with this two params nothing change ! how i could achieve that ?

    wontfix 
    opened by mourareaupro 0
  • TableTools

    TableTools

    TableTools not working for file save buttons copy and print and save buttons are left on the top level.

                "dom": 'T<"clear">lfrtip',
                "tableTools": {
                    "aButtons": [
                        "copy",
                        "print",
                        {
                            "sExtends":    "collection",
                            "sButtonText": "Save",
                            "aButtons":    [ "csv", "xls", "pdf" ]
                        }
                    ]
                },
    
    wontfix 
    opened by amarkotha366 0
  • trying to install package manually without composer

    trying to install package manually without composer

    I am trying to install this package manually without using composer. so i copied Bllim folder from vendor directory to another laravel app vendor directory. But it says Bllim service provider not found after adding it to app.php

    wontfix 
    opened by venkatiiitb 1
  • found an error in filterColumn to wherein

    found an error in filterColumn to wherein

    ->filterColumn('prod_id', 'whereIn', 'prod_id', '38,42,16')

    it show error: Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array, string given, called in E:\web\sudehuishou\vendor\laravel\framework\src\Illuminate\Database\Query\Grammars\Grammar.php on line 311 and defined

    wontfix 
    opened by chrisho 0
  • trim() expects parameter 1 to be string, array given #717

    trim() expects parameter 1 to be string, array given #717

    ->filterColumn('prod_id', 'whereIn', 'prod_id', [38,42,16])
    

    Error:\vendor\bllim\datatables\src\Bllim\Datatables\Datatables.php717 trim() expects parameter 1 to be string, array given

    wontfix 
    opened by dragon0103 2
Releases(v1.5.0-alpha)
Owner
Bilal Gultekin
Bilal Gultekin
Textpattern-jquery-ui-theme - The jQuery UI theme used within the Textpattern CMS admin-side.

Textpattern jQuery UI theme The jQuery UI theme used within the Textpattern CMS admin-side. Supported web browsers Chrome, Edge, Firefox, Safari and O

Textpattern CMS 12 Jan 10, 2022
Easy Laravel Server-Side implementation of PrimeVue Datatables

Laravel + PrimeVue Datatables This is a simple, clean and fluent serve-side implementation of PrimeVue Datatables in Laravel. Features Global Search i

Savannabits 11 Dec 29, 2022
DataTables server-side for CodeIgniter, supported both for CodeIgniter 3 and CodeIgniter 4.

CodeIgniter DataTables DataTables server-side for CodeIgniter, supported both for CodeIgniter 3 and CodeIgniter 4. Note: This library only handle the

Nur Muhammad 14 Dec 15, 2022
jQuery DataTables API for Laravel 4|5|6|7|8

jQuery DataTables API for Laravel 4|5|6|7|8 This package is created to handle server-side works of DataTables jQuery Plugin via AJAX option by using E

Arjay Angeles 4.5k Jan 9, 2023
Laravel style jquery validation plugin

Validator Laravel style jquery validation plugin Validator is a jQuery plugin that emulates the validation class found in the laravel framework. Usage

David Thingsaker 5 Aug 31, 2022
A simple to use query builder for the jQuery QueryBuilder plugin for use with Laravel.

QueryBuilderParser Status Label Status Value Build Insights Code Climate Test Coverage QueryBuilderParser is designed mainly to be used inside Laravel

Tim Groeneveld 149 Nov 11, 2022
Laravel 8 + CoreUI + Livewire + Datatables (CRUD)

Laravel 8 + CoreUI + Livewire + Datatables About Laravel 8 + CoreUI + Livewire Datatables Whats Inside Laravel Core UI - (https://github.com/HZ-HBO-IC

Muhammad Rheza Alfin 38 Nov 3, 2022
Laravel Datatables Package Demo App

#Laravel Datatables Demo App Datatables Package for Laravel 4|5 This package is created to handle server-side works of DataTables jQuery Plugin via AJ

Arjay Angeles 139 Dec 23, 2022
Laravel 8 + CoreUI + Livewire + Datatables (CRUD)

Laravel 8 + CoreUI + Livewire + Datatables About Laravel 8 + CoreUI + Livewire Datatables Whats Inside Laravel Core UI - (https://github.com/HZ-HBO-IC

Muhammad Rheza Alfin 38 Nov 3, 2022
⚡ PowerGrid generates Advanced Datatables using Laravel Livewire.

?? Documentation | ?? Features | ⌨️ Get started Livewire ⚡ PowerGrid ⚡ PowerGrid creates modern, powerful and easy to customize Datatables based on La

Power Components ⚡ 962 Jan 2, 2023
This package was created to deal with laravel datatables and cruds using vuejs.

datatable-cruds Installation This package was created to deal with laravel datatables and cruds using vuejs. Install the package through Composer. Run

Osama Saad 9 Dec 19, 2022
Data Table package with server-side processing, unlimited exporting and VueJS components

Data Table package with server-side processing, unlimited exporting and VueJS components. Quickly build any complex table based on a JSON template.

Laravel Enso 618 Dec 28, 2022
Livewire DataTables components for back-end. Modular, easy to use, with tons of features.

Livewire DataTables Livewire DataTables components for back-end. Modular, easy to use, with tons of features. Inspired by Caleb's Livewire Screencasts

Amir Rami 8 Jul 27, 2022
Jetstrap is a lightweight laravel 8 package that focuses on the VIEW side of Jetstream / Breeze package installed in your Laravel application

A Laravel 8 package to easily switch TailwindCSS resources generated by Laravel Jetstream and Breeze to Bootstrap 4.

null 686 Dec 28, 2022
The University of Arizona Libraries will no longer provide support for Guide on the Side.

The University of Arizona Libraries will no longer provide support for Guide on the Side. The code will remain openly available; however, UAL can no longer provide code fixes or upgrades.

The University of Arizona Libraries 66 Oct 31, 2022
Symfony bundle that provides Cross Site Request Forgery (CSRF or XSRF) protection for client-side applications

CSRF Cookie Bundle This Symfony bundle provides Cross Site Request Forgery (CSRF or XSRF) protection for client-side applications requesting endpoints

David Neustadt 8 Nov 28, 2022
If you are beginner in WordPress plugin development or if you want to develop your own store product plugin you use this plugin

hirwa-products-plugin If you are beginner in WordPress plugin development or if you want to develop your own store product plugin you use this plugin

NIYIBIZI HIRWA 1 Aug 23, 2022
This is a plugin written in the PHP programming language and running on the PocketMine platform that works stably on the API 3.25.0 platform. It helps to liven up your server with Tags!

General This is a plugin written in the PHP programming language and running on the PocketMine platform that works stably on the API 3.25.0 platform.

Thành Nhân 4 Oct 21, 2021
A plugin for Blessing Skin Server that can let you display Google Ads with Google AdSense in the website.

A plugin for Blessing Skin Server that can let you display Google Ads with Google AdSense in the website.

Big_Cake 2 Jan 25, 2022