рдореИрдВ DB рдХреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП DataTable Service
UsersDataTable
Class рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ (user_id, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдЖрджрд┐) рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд░реВрдВ?
UsersController:
class UsersController extends Controller
{
public function index(UsersDataTable $dataTable)
{
return $dataTable->render('users');
}
}
рдХреНрдпрд╛ рдореБрдЭреЗ UsersDataTable
public function query($param) {}
рдпрд╛ public function ajax($param) {}
рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдпрджрд┐ рдЖрдк v7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
class UsersController extends Controller
{
public function index(UsersDataTable $dataTable)
{
return $dataTable->with('key', 'value')->render('users');
}
}
рдФрд░ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреНрд▓рд╛рд╕ рдкрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреА рддрд░рд╣ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВред
public function query() {
$key = $this->key;
...
}
рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИ рдЬрд╣рд╛рдБ рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдк рдХреА рдЬрд░реВрд░рдд рдЧрдпреАред рдкреНрд░рд▓реЗрдЦрди рдкрд░ рдЕрднреА рддрдХ рдЬреЛрдбрд╝рд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИред
рдирдорд╕реНрддреЗ, рдЖрдк рдЗрд╕ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ 6 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред Laravel 5.3.30 рдХреЗ рд▓рд┐рдП,
рдЕрдЧрд░ рдореИрдВ рдбреЗрдЯрд╛рдЯреИрдмрд▓реНрд╕ 6.x рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рдХреЛрдб рдХреЛ рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░реВрдВ рддреЛ рдХреНрдпрд╛ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛?
рдореИрдВрдиреЗ рдбреЗрдЯрд╛рдЯреИрдмрд▓реНрд╕ 6.x рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдХреЛрдб рдЬреЛрдбрд╝рд╛, рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рд╕рд░реНрд╡рд┐рд╕ рдХреНрд▓рд╛рд╕ query()
:
public function query()
{
$id = $this->id;
$restaurant = restaurant::where('res_id', $id);
return $this->applyScopes($restaurant);
}
return $this->applyScopes($restaurant);
, $restaurant
рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ:
Expected \Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Query\Builder, got \App\Models\restaurant less... (Ctrl+F1)
Invocation parameter types are not compatible with declared.
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореИрдВ ->get()
рдЬреЛрдбрд╝реВрдВрдЧрд╛, рддреЛ return $this->applyScopes($restaurant->get());
рдЪреЗрддрд╛рд╡рдиреА рдЪрд▓реА рдЬрд╛рдПрдЧреА, рд▓реЗрдХрд┐рди рдбрд┐рдЯреИрдЯреЗрдмрд▓ рд╡реНрдпреВ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреА:
DataTables warning: table id=dataTableBuilder - ajax error.
рдХреНрдпрд╛ рдЖрдк рдЕрдкрдирд╛ рд░реЗрд╕реНрддрд░рд╛рдВ рд╡рд░реНрдЧ рдкреЗрд╕реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдореЙрдбрд▓ рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред
рд╡реИрд╕реЗ рднреА, рд╡рд┐рдХреНрд░реЗрддрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ v6 рдкрд░ рднреА рдзрд╛рд░рд╛рдкреНрд░рд╡рд╛рд╣ рдЪрд░ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рдХреГрдкрдпрд╛ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП v6.27.0 рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред рдзрдиреНрдпрд╡рд╛рдж!
рдирдорд╕реНрддреЗ, рдпрд╣ рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд░реЗрд╕реНрддрд░рд╛рдВ рдореЙрдбрд▓ рдХреНрд▓рд╛рд╕ рд╣реИ:
<?php
namespace App\Models;
use Eloquent as Model;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* Class restaurant
*
* <strong i="6">@package</strong> App\Models
* <strong i="7">@version</strong> February 27, 2017, 5:13 pm UTC
* <strong i="8">@property</strong> int $res_id
* <strong i="9">@property</strong> string $res_name
* <strong i="10">@property</strong> string $res_image
* <strong i="11">@property</strong> string $res_image_date
* <strong i="12">@property</strong> string $res_address
* <strong i="13">@property</strong> string $res_state
* <strong i="14">@property</strong> string $res_location
* <strong i="15">@property</strong> string $res_area
* <strong i="16">@property</strong> string $res_telephone
* <strong i="17">@property</strong> int $res_min_price
* <strong i="18">@property</strong> int $res_max_price
* <strong i="19">@property</strong> float $res_latitude
* <strong i="20">@property</strong> float $res_longitude
* <strong i="21">@property</strong> bool $res_chain
* <strong i="22">@property</strong> bool $res_new
* <strong i="23">@property</strong> bool $res_offer
* <strong i="24">@property</strong> bool $res_type_state
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\res_working_hour[] $workingHours
* <strong i="25">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResAddress($value)
* <strong i="26">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResArea($value)
* <strong i="27">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResChain($value)
* <strong i="28">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResId($value)
* <strong i="29">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResImage($value)
* <strong i="30">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResImageDate($value)
* <strong i="31">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResLatitude($value)
* <strong i="32">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResLocation($value)
* <strong i="33">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResLongitude($value)
* <strong i="34">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResMaxPrice($value)
* <strong i="35">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResMinPrice($value)
* <strong i="36">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResName($value)
* <strong i="37">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResNew($value)
* <strong i="38">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResOffer($value)
* <strong i="39">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResState($value)
* <strong i="40">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResTelephone($value)
* <strong i="41">@method</strong> static \Illuminate\Database\Query\Builder|\App\Models\restaurant whereResTypeState($value)
* <strong i="42">@mixin</strong> \Eloquent
*/
class restaurant extends Model
{
//use SoftDeletes;
public $table = 'fc_restaurant';
public $timestamps = false;
//const CREATED_AT = 'created_at';
//const UPDATED_AT = 'updated_at';
protected $dates = ['deleted_at'];
protected $primaryKey = 'res_id';
//protected $hidden = 'res_id';
public $fillable = [
'res_name',
'res_image',
// 'res_image_date',
'res_address',
'res_state',
'res_location',
'res_area',
'res_telephone',
'res_min_price',
'res_max_price',
'res_latitude',
'res_longitude',
'res_chain',
'res_new',
'res_offer',
'res_type_state'
];
/**
* The attributes that should be casted to native types.
*
* <strong i="43">@var</strong> array
*/
// protected $casts = [
// 'res_id' => 'integer',
// 'res_name' => 'string',
// 'res_image' => 'string',
// 'res_address' => 'string',
// 'res_state' => 'string',
// 'res_location' => 'string',
// 'res_area' => 'string',
// 'res_telephone' => 'string',
// 'res_min_price' => 'integer',
// 'res_max_price' => 'integer',
// 'res_latitude' => 'float',
// 'res_longitude' => 'float'
// ];
/**
* Validation rules
*
* <strong i="44">@var</strong> array
*/
public static $rules = [
];
public function workingHours()
{
return $this->hasMany('App\Models\res_working_hour', 'res_id');
}
}
рд╣реЗ рдЧрдЬрд░рд╛, рдпрд╣ $ рдХреБрдВрдЬреА = $ рдпрд╣ рд╣реИ-> рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ; $ рдХреБрдВрдЬреА рдирд╣реАрдВ = $ рдпрд╣-> рдХреБрдВрдЬреА; рд╕рд╣реА?
рдореИрдВрдиреЗ рдЗрд╕ $ рдХреБрдВрдЬреА = $ рдЗрд╕-> рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛;
@jcduenasr рд╡рд░реНрдЧ рдПрдХ рдореИрдЬрд┐рдХ
рдирдорд╕реНрддреЗ, рдореЗрд░реЗ рдкрд╛рд╕ рджреЛ рдХреНрд╡реЗрд░реА рдлрд╝реАрд▓реНрдб рд╣реИрдВ рдЬреЛ рджрд┐рдирд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреНрд╡реЗрд░реА рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдореБрдЭреЗ рд╣рдЬрд╛рд░реЛрдВ рд░рд┐рдХреЙрд░реНрдб рд▓рд╛рдиреЗ рд╕реЗ рд░реЛрдХрддреА рд╣реИрдВред
рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдореИрдВ рдПрдХ рдмрдЯрди рдХреЗ рд╕рд╛рде рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдХреНрд╡реЗрд░реА рджрд┐рдирд╛рдВрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╣реАрдВ рднреЗрдЬ рд░рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд╛ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджрд┐рдирд╛рдВрдХ рдлрд╝реАрд▓реНрдб рдХреИрд╕реЗ рднреЗрдЬреВрдВ?
рдпрд╣ рдореЗрд░реА рдХрдХреНрд╖рд╛ рд╣реИред
рдирд╛рдорд╕реНрдерд╛рди AppDataTables;
App \ Accesos рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
YajraDatatables \ Services \ DataTable рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
рд╡рд░реНрдЧ AccesosDataTable DataTable рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ
{{
public function ajax()
{
return $this->datatables
->eloquent($this->query())
->make(true);
}
public function html()
{
return $this->builder()
->columns($this->getColumns())
->ajax('')
->parameters([
'dom' => 'Bfrtip',
'buttons' => ['export', 'reload'],
]);
}
public function query()
{
$key = $this->attributes;
$users = Accesos::whereBetween('field_filter',[$key['from'].' 00:00:00',$key['to'].' 23:59:59'])->select();
return $this->applyScopes($users);
}
protected function getColumns()
{
return [
'field1',
'field2',
'field3',
'field4',
'field5',
'field6',
];
}
protected function filename()
{
return strtolower(trans('accesos'));
}
}
рдбреЙрдХреНрд╕ рдиреЗ https://yajrabox.com/docs/laravel-datatables/master/buttons-with рдЬреЛрдбрд╝рд╛
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдпрджрд┐ рдЖрдк v7 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдФрд░ рдбреЗрдЯрд╛рдЯреЗрдмрд▓ рдХреНрд▓рд╛рд╕ рдкрд░ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреА рддрд░рд╣ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░реЗрдВред