Download the PHP package freshbitsweb/laratables without Composer

On this page you can find all versions of the php package freshbitsweb/laratables. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laratables

Latest Stable Version Total Downloads License StyleCI Buy us a tree

Package Status

This package is not under active development. We no longer plan to add new features. The main reason being that our company projects do not use Datatables anymore.

If you wish to maintain a fork of this package, I would be more than happy to link.

Laratables

A Laravel package to handle server side ajax of Datatables.

Table of contents

Introduction

This package helps with simple requirements of displaying data from eloquent models into datatables with ajax support. Plus, using simple relationships and customizing column values. Laratables does not work with Datatables Editor yet.

How to use

The basic approach is that you can specify the Datatable configuration and columns on the client side just like you would without any major change and call a single method on the server side to handle ajax calls. The package will create necessary queries to fetch the data and make the search and ordering functionality work automatically. If needed, You can step-in and customize query/data/logic at various stages by adding methods in your Eloquent model or a custom class.

Client side

⚠️ IMP Note ⚠️ - The client side code decides the columns that should be fetched. If you are showing the table on a public facing page, malicious users can modify the HTTP request to fetch data for other columns of respective table and related tables. It is highly recommend that you validate the requests before returning the data.

Server side

There are multiple ways to customize query/data/logic. Check Customization section below for details.

⬆ back to top

Demo Repositories

  1. https://github.com/freshbitsweb/laratables-demo-one-to-many
  2. https://github.com/freshbitsweb/laratables-demo-customize-column
  3. https://github.com/freshbitsweb/laratables-demo-basic
  4. https://github.com/freshbitsweb/laratables-demo-many-to-many
  5. https://github.com/freshbitsweb/laratables-demo-one-to-many-polymorphic
  6. https://github.com/freshbitsweb/laratables-demo-one-to-one

Requirements

PHP Laravel Package
8.2+ 11.x v4.0.0
8.0+ 10.x v3.0.0
8.0+ 9.x v2.5.0
7.3+ 8.x v2.4.0
7.2.5+ 7.x v2.3.0
<7.2.5 6.x v2.2.0
7.1 5.x v2.0.*

Installation

Install the package by running this command in your terminal/cmd:

Optionally, you can import config file by running this command in your terminal/cmd:

⬆ back to top

Customization

Following the steps of How to use section should get you up and running with a simple datatables example in a minute. However, many datatables require customization ability. First use case is about applying additional where conditions to the query or load additional relationships.

To achieve that, you can simply pass a closure/callable as a second parameter to recordsOf() method. It should accept the underlying query as a parameter and return it after applying conditionals:

There are many more options to customize query/data/logic. You can add any of the following methods (they start with laratables word) in your model or a custom class to keep your model neat and clean. Specify the name of the custom class as the second argument to the recordsOf() method if you wish to use one:

⬆ back to top

Controlling the query

If you wish to apply conditions everytime a model is used to display a Laratable, add laratablesQueryConditions() static method to the model/custom class.

This method accepts and returns a $query object.

Controlling the relationship query

You can also control the relationship query by defining a closure which can be used while eager loading the relationship records. The static method name format is laratables[RelationName]RelationQuery.

Joining related tables to the query

The laratablesQueryConditions() method can also be used to add joins on the base table. This is particularly useful if you need to define custom searching and sorting based on related models, for example:

Note - If searching/filtering by columns from the joined table, you will need to also ensure they are included in the selected columns. A couple of options for how to do this include:

⬆ back to top

Custom columns

Generally, we need one or more columns that are not present in the database table. The most common example is 'Action' column to provide options to edit or delete the record. You can add a static method laratablesCustom[ColumnName]() to your model/custom class to specify the custom column value. As per our example, it could be:

As you may have observed, you receive an eloquent object of the record as a parameter to use the record details in your method.

⬆ back to top

Relationship columns

We also need to display data from related models, right? And it's super easy here. No need to do anything on server side for simple relationships. Just specify the name of the relation and the name of the column on the client side inside columns array.

Ordering records by a relationship column is not supported in Laravel as main table records are fetched first and another query is fired to fetch related table records. Therefore, you should always keep your relationship table columns to be orderable: false.

Note - The package does not support nested relationships yet. You can utilize the custom column feature to get the nested relationship data but make sure that you eager load the relationship records.

⬆ back to top

Customizing column values

Sometimes, you may need to customize the value of a table column before displaying it in the datatables. Just add a static method laratables[ColumnName]() in your eloquent model/custom class to play with that:

Relationship columns can also be customized by adding a static method in this format laratables[RelationName][ColumnName]().

These static methods are called on the eloquent model/custom class with the eloquent object of the record as a parameter.

Note - These methods were regular methods in v1.*.*

⬆ back to top

Searching

Datatables provides searching functionality to filter out results based on any of the displayed columns values. While this package automatically applies orWhere conditions with like operator, you can put your own conditions for any column. We provide static method laratablesSearch[ColumnName]() for the same.

If any of the columns is a relationship column, the package is smart enough to apply orWhereHas query with necessary closure to filter out the records accordingly. And you can override that behaviour by adding laratablesSearch[RelationName][ColumnName]() static method to your eloquent model/custom class.

Note - You can add searchable: false to any of the columns in Datatables configuration (client side) to prevent searching operation for that column. Or you can also add the name of the column to the non_searchable_columns array in the config file.

⬆ back to top

Ordering (Sorting)

Ordering for regular table columns works by default. Multi-column sorting is also supported. For relationship columns or custom columns, you should either add orderable: false to Datatables column configuration or add a static method laratablesOrder[ColumnName]() and return the name of main table column that should be used for ordering the records instead. For example, if your table contains first_name and Datatables has just name, you can add:

You can also order rows by a raw statement by adding a static method laratablesOrderRaw[ColumnName]() and return the raw statement that we would put in orderByRaw() of the query. The function receives the $direction variable which will be either asc or desc.

⬆ back to top

Selecting additional columns

We have coded the package in a way where the query selects only required columns from the database table. If you need values of additional column when you are customizing column values, you may specify them in an array inside laratablesAdditionalColumns() static method. For example, if you have first_name and surname in the table and you're just using a custom column name instead, you can add:

⬆ back to top

Specifying additional searchable columns

If you need to search for values in columns of the table which aren't displayed in the Datatables, you may specify them in an array inside laratablesSearchableColumns() static method. For example, if you have first_name and surname in the table and you want users to be able to search by those columns even if they are not displayed in the Datatables, you can add:

⬆ back to top

Date format for Carbon instances

By default, Laravel treats created_at and updated_at as Carbon instances and you can also treat any other column of your table as a Carbon instance as well. This package has a config option date_format to specify the format in which the dates should be returned for Datatables. Default format is 'Y-m-d H:i:s'.

Modify fetched records

Sometimes, we need to work with the records after they are already fetched. You can add laratablesModifyCollection() static method to your model/custom class to play with the collection and return the updated one. Note that if you add/remove any items from the collection, the Datatables count will have a mismatch.

⬆ back to top

Extra data- Datatables attributes

Datatables accepts extra data- attributes with each of the record. Following are supported with the package:

  1. DT_RowId: This data attribute is added to each of the record by default. You can update row_id_prefix config option to set the prefix to that record id.

  2. DT_RowClass: You can add laratablesRowClass() static method to your model/custom class and return an html class name. Example:

Note - This method was a regular method in v1.*.*

  1. DT_RowData: You can add laratablesRowData() static method to your model/custom class and return an array with key as the attribute name and its corresponding value. Example:

Note - This method was a regular method in v1.*.*

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE file for details

Treeware

You're free to use this package, but if it makes it to your production environment I would highly appreciate you buying the world a tree.

It’s now common knowledge that one of the best tools to tackle the climate crisis and keep our temperatures from rising above 1.5C is to plant trees. If you contribute to our forest you’ll be creating employment for local families and restoring wildlife habitats.

You can buy trees at for our forest here offset.earth/treeware

Read more about Treeware at treeware.earth

Special Thanks to


All versions of laratables with dependencies

PHP Build Version
Package Version
Requires php Version ^8.0
illuminate/support Version ^9.33.0|^10.0|^11.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package freshbitsweb/laratables contains the following files

Loading the files please wait ....