Closed kkcodes closed 6 years ago
Please post your code and the query.
The Datatables going from the view:
$options = [
'ajax' => [
'url' => $this->Url->build(),
'data' => $this->DataTables->callback("function ( d ) {
d.filter_sport = $('#filter_sprt').val();
}") // current controller, action, params
],
'columns' => [
[
'name' => 'TableName.category_id',
'data' => 'category_id',
'searchable' => false,
],
[
'name' => 'TableName.title',
'data' => 'cat',
'searchable' => false,
],
[
'name' => 'TableName.media_url',
'data' => 'images',
'render' => $this->DataTables->callback("function ( data, type, row ) {
if(data != null || data != undefined)
{
return '<img src=\"'+data+'\" height=\"50\" width=\"50\">';
}
else
{
return 'No Image Found';
}
}"),
'searchable' => false
],
[
'name' => 'TableName.title',
'data' =>'name',
'searchable' => true,
],
[
'name' => 'TableName.display_rank',
'data' =>'cat_rank',
'searchable' => false,
],
[
'name' => 'TableName.created_utc',
'data' => 'sportdate',
'render' => $this->DataTables->callback("function ( data, type, row ) {
var d = new Date(data);
var monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",
\"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"
];
var curr_date = d.getDate();
var curr_month = monthNames[d.getMonth()];
var curr_year = d.getFullYear();
curr_year = curr_year.toString().substr(2,2);
return curr_date+\" \"+curr_month+\" \"+curr_year+\" \"+ d.toLocaleString('en-IN', { hour: 'numeric',minute:'numeric', hour12: true });;
}")
],
[
'name' => 'TableName.question_id',
'data' =>'question_cnt',
'searchable' => false
]
],
'responsive' => true,
'dom' => '<"html5buttons"B>lTfgitp',
'buttons' => [
[
"extend" => "csv"
]
]
];
echo $this->DataTables->table('table-name', $options, ['class' => 'table table-striped']);
Now the query has TableName.question_id like 's%', however above it the searchable is false for question_id above.
Searchable is a property read by the component, not by the helper. It is the component that queries the ORM. You need to set this property in the columns you pass to the component's method.
Also it is good practice to carry-over the columns as defined in the controller to the view as a view variable. Have a look at my comment here on how this can be done in an elegant way, and you only have to define few of the colum properties in the controller.
I have used the
'searchable' => false,
For a couple of columns, however, if I see the MySQL query for search, then I can see that it searches for the given query string for those columns as well, whose searchable is false.
Please provide some help regarding it.