cakephp-datatables
cakephp-datatables copied to clipboard
Search error with column type text.
Hello,
I've a problem with one table column that is a text type in my model. When i try to search i've an error on line 311 in DataTablesComponent.php, PHP cannot set type "text" :
settype(): Invalid type [ROOT/vendor/ypnos-web/cakephp-datatables/src/Controller/Component/DataTablesComponent.php, line 311]
$columnDesc = $table->getSchema()->getColumn($column);
$columnType = $columnDesc['type'];
// wrap value for LIKE and NOT LIKE
if (strpos(strtolower($comparison), 'like') !== false) {
$value = $this->getConfig('prefixSearch') ? "{$value}%" : "%{$value}%";
if ($this->_table->getConnection()->getDriver() instanceof Postgres) {
if ($columnType !== 'string' && $columnType !== 'text') {
$textCast = "::text";
}
}
}
settype($value, $columnType);
$condition = ["{$table->getAlias()}.{$column}{$textCast} {$comparison}" => $value];
Can i force my text field to string without modify your controller file ?
Kind regards
For now i've change line 300 :
$columnType = ($columnDesc['type'] === 'text') ? 'string' : $columnDesc['type'];
Instead, add this before line 311:
if ($columnType === 'text') { // convert to PHP type
$columnType = 'string';
}
Please test it and if it works, do a pull request. Thanks!