我找到了一种很好的方法来快速检索我需要使用MySQL group_concat
非常棒的数据。但是,我有时会检索长串数据。如果只增加GROUP_CONCAT_MAX_LEN
变量,那么这应该不是问题。
从MySQL命令行界面测试我的查询时,我能够这样做。但是我无法在CakePHP中正确配置它。我试过了:
SET GROUP_CONCAT_MAX_LEN = <very_big_value>;
,但这不起作用。 修改CakePHP的database.php
配置文件,如下所示:
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => CONFUSEDBOY_DB_SERVER,
'port' => '',
'login' => CONFUSEDBOY_DB_USER,
'password' => CONFUSEDBOY_DB_PASSWORD,
'database' => CONFUSEDBOY_DB_NAME,
'schema' => '',
'prefix' => '',
'encoding' => '',
'settings' =>array("GROUP_CONCAT_MAX_LEN"=>"20000000")
);
[...]
}
这些都不起作用。知道如何实现我的目标吗?
有关信息,我使用的是CakePHP 2.3和MySQL 5.7。
编辑代码显示我在查询之前尝试使用SET
的方法(来自名为Things
的模型)
<?php
/* This class represents things */
class Things extends AppModel {
var $name = 'Things';
var $useTable = 'things';
function getThingsWithGroupConcat($user_id) {
$summary = array(); // Array that store results and is returned at the end
$query = "SET GROUP_CONCAT_MAX_LEN=20000000;SELECT [...] group_concat(foo) from things where user_id = '".$user_id."' [...];";
$res = $this->query($query);
for($i=0;$i< count($res);$i++){
// Process query results to populate `$summary`
}
// pr($summary);
return($summary);
}
}