์ฌ์ฉ์ ์ง์ ๋๋กญ ๋ค์ด์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ํํฐ๊ฐ ํ์ํฉ๋๋ค. ์ด์ ์ ํ์์ผ๋ก ํ์๋๋ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค. ์ด์ ๋๋กญ ๋ค์ด ๊ฐ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ๋ ค๋ฉด ํค๋์ ์ฌ์ฉ์ ์ง์ ๋๋กญ ๋ค์ด์ด ํ์ํฉ๋๋ค. [์ฐธ๊ณ : laravel ์ฟผ๋ฆฌ์ ํํฐ์์ด ๋๋กญ ๋ค์ด ๊ฐ์ ์ ๊ณตํด์ผํฉ๋๋ค. ์ด๊ฒ์ ์ฌ์ฉ์ ์ง์ ๊ฐ์ด๋ฏ๋ก์ด ์ฌ์ฉ์ ์ง์ ๊ฐ์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํด์ผํฉ๋๋ค.]
์ด ์ฝ๋๋ ๊ธฐ๋ณธ ํํฐ์์ ์๋ํ์ง๋ง jquery๋ฅผ ์ฌ์ฉํ์ฌ ๋๋กญ ๋ค์ด์ ์ถ๊ฐ ํ์ผ๋ฏ๋ก ๋ฐ์ดํฐ๋ฅผ ํํฐ๋งํ๋ ค๋ฉด laravel ์ฟผ๋ฆฌ์์์ด ๊ฐ์ ์ ๋ฌํด์ผํฉ๋๋ค.
$(function () {
var t = $('#user').DataTable({
order: [[ 0, 'desc' ]],
processing: true,
serverSide: true,
ajax: {
url: '{!! route('datatables.data') !!}',
data: function(d) {
d.name = $('input[name=name]').val();
d.email = $('input[name=email]').val();
}
},
columns: [
{ data: 'id', name: 'id' },
{ data: 'name', name: 'name' },
{ data: 'email', name: 'email' },
{ data: 'arrival_date', name: 'arrival_date', orderable: true, searchable: true },
{ data: 'pick_up', name: 'pick_up', orderable: true, searchable: true },
{ data: 'destination', name: 'destination', orderable: true, searchable: true},
{ data: 'trekking_start_date', name: 'trekking_start_date', orderable: true, searchable: true},
{ data: 'trekking_end_date', name: 'trekking_end_date', orderable: true, searchable: true},
{ data: 'action', name: 'action', orderable: false, searchable: false},
]
});
});
$(document).ready(function() {
$('<label style="margin-left: 10px;">Filter by ' +
'<select class="form-control input-sm">'+
'<option value="volvo">Completed Trip</option>'+
'<option value="saab">Upcoming Trip</option>'+
'</select>' +
'</label>').appendTo("#user_wrapper #user_length");
});
๊ทธ๋ฆฌ๊ณ laravel์ ๋ด ์ฟผ๋ฆฌ ์ฝ๋
public function getClients(Request $request)
{
if($request->ajax()) {
return Datatables::of(DB::select(DB::Raw('SELECT * FROM users WHERE id NOT IN (SELECT user_id FROM role_user) ORDER BY users.id DESC')))
//}))
->addColumn('arrival_date', function($user){
if(isset(Helper::getFlightsByClientID($user->id)->arrival_date)) {
return date('M j, Y', strtotime(Helper::getFlightsByClientID($user->id)->arrival_date));
} else {
return 'N/A';
}
})
->addColumn('pick_up', function($user){
if(isset(Helper::getFlightsByClientID($user->id)->pick_up)) {
return Helper::getFlightsByClientID($user->id)->pick_up == 1 ? 'Yes' : 'No';
} else {
return 'N/A';
}
})
->addColumn('destination', function($user){
if(isset(Helper::getTreksByClientID($user->id)->trekking_region_id)) {
return Helper::getTrekByID(Helper::getTreksByClientID($user->id)->trekking_region_id)->name;
} else {
return 'N/A';
}
})
->addColumn('trekking_start_date', function($user){
if(isset(Helper::getTreksByClientID($user->id)->trekking_start_date)) {
return date('M j, Y', strtotime(Helper::getTreksByClientID($user->id)->trekking_start_date));
} else {
return 'N/A';
}
})
->addColumn('trekking_end_date', function($user){
if(isset(Helper::getTreksByClientID($user->id)->trekking_end_date)) {
return date('M j, Y', strtotime(Helper::getTreksByClientID($user->id)->trekking_end_date));
} else {
return 'N/A';
}
})
->addColumn('action', function($user){
$html = '';
$html .= '<a class="btn bg-green btn-flat btn-xs" href="'.route('user.clients.edit', $user->id).'">Edit</a>';
if(auth()->user()->hasRole('superadmin')) {
$html .= ' <a onclick="if(!confirm(\'Are u sure to delete?\')) return false;" class="btn bg-red btn-flat btn-xs" href="'.route('user.clients.delete', $user->id).'">Delete</a>';
}
return $html;
})
->make(true);
} else {
abort(400, 'Bad Request.');
}
}
ํด๋น๋๋ ๊ฒฝ์ฐ ์์ฌ๋๋ ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํ๋ ์ฝ๋ ์ฌ๋ณธ์ ํฌํจํ์ญ์์ค. ๋งํฌ ๋ค์ด PHP ์ฝ๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ถ์ฌ ๋ฃ๊ธฐ ํ์์ ์ง์ ํ ์ ์์ต๋๋ค. md5-42b62c99f5c90574389e92bc9e32fddb
@shankhadevpadam ๋น์ ์ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ด๊ฒ์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋ด๊ฐํ๋ ์ผ์ ์๋ฒ ์ธก์ ๋ฐ์ดํฐ ํ ์ด๋ธ ์์ ์ฟผ๋ฆฌ ๋น๋๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ ๋๋ค.
$model = new Example();
$model->where('column_to_filter','=',$this->request->get('filter_by'));
return datatables()->eloquent($model);
๋ฌผ๋ก ์กฐ๊ฑด๋ถ IF๋ฅผ ์ํ ํ ์ ์์ต๋๋ค.
$model = new Example();
if($this->request->has('name')) {
$model->where('name','=','predefined value');
}
return datatables()->eloquent($model);
์์ ์๋ฅผ ์ํ์ง ์๋ ๊ฒฝ์ฐ ๋ฌธ์๋ฅผ ์ฐธ์กฐ ํ ์ ์์ต๋๋ค. ๊ฒ์๋ฌผ ์ด ๊ฒ์ , ๋ง์ถค ํํฐ
๋ด ์ง๋ฌธ์ ์์ ์ด๋ฏธ์ง์ ๊ฐ์ด ๋๋กญ ๋ค์ด์ ๋ฐ์ธ๋ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ฌ์ฉ์ ์ง์ jquery๋ฅผ ํตํด ๋ฐ์ธ๋ฉํ์ง๋ง ๋ฐ์ดํฐ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ๋ฐ์ธ๋ฉํด์ผํ๋ฉฐ ๋๋กญ ๋ค์ด์ด ๋ณ๊ฒฝ ๋ ๋์ด ๊ฐ์ ์ฌ์ฉํ ์ ์์ด์ผํฉ๋๋ค. [Please look my code snippet]
์ ํ ์์์ id
์ ์ถ๊ฐํฉ๋๋ค.
<select class="form-control input-sm" id="custom-filter">
๊ทธ๋ฐ ๋ค์ ์์ฒญ ๋งค๊ฐ ๋ณ์์ ํฌํจํฉ๋๋ค.
ajax: {
url: '{!! route('datatables.data') !!}',
data: function(d) {
d.name = $('input[name=name]').val();
d.email = $('input[name=email]').val();
d.filter = $('#custom-filter').val();
}
},
๊ทธ๋ฐ ๋ค์ ์๋ฒ ์ธก์์ ํ์ํ ํํฐ๋ฅผ ์ํํ์ญ์์ค.
if ($filter = request('filter')) {
$query->where('filter', $filter);
}
ํํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๊ทธ๋ฆฌ๊ธฐ๋ฅผ ํธ๋ฆฌ๊ฑฐํด์ผํฉ๋๋ค. ์๋ง๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
<select class="form-control input-sm" id="custom-filter" onchange="$('#user').DataTable().draw()">
๋ํ ์ปฌ๋ ์ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ณํ๊ฒ ํ๋ค
DB::select(DB::Raw('SELECT * FROM users WHERE id NOT IN (SELECT user_id FROM role_user) ORDER BY users.id DESC'))
๋ค์๊ณผ ๊ฐ์ด :
DB::table('users')->whereNot(...);
๊ฐ์ฌํฉ๋๋ค.
ํ์ํฉ๋๋ค. ์ ์ฉํ๋ค๊ณ ์๊ฐ๋๋ฉด ํ๋ก์ ํธ์ ๋ณํ๋ฅผ ํ์ํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. :) ๊ฐ์ฌ!
๋๋กญ ๋ค์ด์ ์๋ฒฝํ๊ฒ ์๋ํ์ง๋ง ๋๋กญ ๋ค์ด์ ๊ฐ ๋ณ๊ฒฝ ํ ๋ฐ์ดํฐ ํ์๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฌ๋์ง ์์ต๋๋ค.
ํํฐ๋ง ํ ๋ ๋ ์ง๋ณ๋ก ์ฃผ๋ฌธ ํ์๊ฒ ์ต๋๊น? js
์์ค์์์ด ์์
์ ์ํํด์ผํฉ๋๋ค. ๋๋ ๊ธฐ๋ณธ ์์๋ฅผ ํด๋น ์ด๋ก ์ค์ ํ์ญ์์ค.
์, ์๋ฅผ ๋ค์ด์ฃผ์ธ์.
์๊ฐ ์์ต๋๋ค. ์ฐธ์กฐ๋ ๊ณต์ js api ๋ฌธ์ https://datatables.net/reference/api/ ๋ฅผ ์ฐธ์กฐํ์ญ์์ค. ํธ๋ฆญ์ ํ ์ด๋ธ ๋ค์ ๊ทธ๋ฆฌ๊ธฐ ๊ธฐ๋ฅ์ ์ํํ๊ธฐ ์ ์ ์๋ js ์์ ๋ช ๋ น์ ์ํํ๋ ๊ฒ์ ๋๋ค.
@yajra ๋ฐ์ดํฐ ํ ์ด๋ธ์์ ๋๋ฑํ ์๋น์ค๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
data: function(d) {
d.name = $('input[name=name]').val();
d.email = $('input[name=email]').val();
d.filter = $('#custom-filter').val();
}
@sistemaswebbrasil ์ฌ์ฉ minifiedAjax()
:
$script = '
data.name = $('input[name=name]').val();
data.email = $('input[name=email]').val();
data.filter = $('#custom-filter').val();
';
return $this
->builder()
...
->minifiedAjax($url = '', $script = null, $data = [])
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ํํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๊ทธ๋ฆฌ๊ธฐ๋ฅผ ํธ๋ฆฌ๊ฑฐํด์ผํฉ๋๋ค. ์๋ง๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋ํ ์ปฌ๋ ์ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๋ณํ๊ฒ ํ๋ค
๋ค์๊ณผ ๊ฐ์ด :