私は2つのテーブルを持っています:
インシデント (id、インシデントの説明) コメント (id、インシデントの ID、コメントの説明)
そのようなSQL式を書きたい:
SELECT incident.*, COUNT(comment.id) AS com
FROM incident
LEFT JOIN comment ON comment.incident_id=incident.id
GROUP BY incident.id
ORDER BY com DESC
phpmyadmin で問題なく動作します。
私はORMで書きます:
ORM::factory('incident')
->select('incident.*',array('COUNT("comment.id")', 'com'))
->join('comment', 'LEFT')
->on('comment.incident_id', '=', 'incident.id')
->group_by('incident.id')
->order_by('com', 'DESC')
->find_all();
しかし、エラーが発生しました: system/libraries/Database.php [296]: * trim() は、パラメーター 1 が文字列で、配列が指定されていることを期待しています*
Database.php からのコード:
foreach ($sql as $val)
{
if (($val = trim($val)) === '') continue;
if (strpos($val, '(') === FALSE AND $val !== '*')
{
if (preg_match('/^DISTINCT\s++(.+)$/i', $val, $matches))
{
$val = $this->config['table_prefix'].$matches[1];
$this->distinct = TRUE;
}
else
{
$val = (strpos($val, '.') !== FALSE) ? $this->config['table_prefix'].$val : $val;
}
$val = $this->driver->escape_column($val);
}
$this->select[] = $val;
}