Grid

Class Ezadev\Admin\Grid is used to generate tables based on the data model,for example,we have a table movies in database:

CREATE TABLE `movies` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `director` int(10) unsigned NOT NULL,
  `describe` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  `rate` tinyint unsigned NOT NULL,
  `released` enum(0, 1),
  `release_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

And the model of this table is App\Models\Movie,The following code can generate the data grid for table movies:

use App\Models\Movie;
use Ezadev\Admin\Grid;
use Ezadev\Admin\Facades\Admin;

use App\Models\Movie;
use Ezadev\Admin\Grid;
use Ezadev\Admin\Facades\Admin;

$grid = new Grid(new Movie);

// The first column displays the id field and sets the column as a sortable column
$grid->id('ID')->sortable();

// The second column shows the title field, because the title field name and the Grid object's title method conflict, so use Grid's column () method instead
$grid->column('title');

// The third column shows the director field, which is set by the display($callback) method to display the corresponding user name in the users table
$grid->director()->display(function($userId) {
    return User::find($userId)->name;
});

// The fourth column appears as the describe field
$grid->describe();

// The fifth column is displayed as the rate field
$grid->rate();

// The sixth column shows the released field, formatting the display output through the display($callback) method
$grid->released('Release?')->display(function ($released) {
    return $released ? 'yes' : 'no';
});

// The following shows the columns for the three time fields
$grid->release_at();
$grid->created_at();
$grid->updated_at();

// The filter($callback) method is used to set up a simple search box for the table
$grid->filter(function ($filter) {

    // Sets the range query for the created_at field
    $filter->between('created_at', 'Created Time')->datetime();
});

Basic Usage

Add a column

Modify the source data

Sets the number of lines displayed per page

Modify the display output of column

The closure passed to method display() is bind to row data object, you can use other column data in current row.

Disable the create button

Disable Pagination

Disable data filter

Disable the export button

Disable row selector

Disable row actions

Disable column selector

Set options for perPage selector

Relation

One to one

The users table and the profiles table are generated one-to-one relation through the profiles.user_id field.

The corresponding data model are:

You can associate them in a grid with the following code:

One to many

The posts and comments tables generate a one-to-many association via the comments.post_id field

The corresponding data model are:

You can associate them in a grid with the following code:

Many to many

The users androles tables produce a many-to-many relationship through the pivot table role_user

The corresponding data model are:

You can associate them in a grid with the following code:

Last updated