संपादित करें :दरअसल, अब मैं देख रहा हूं कि मेरी क्वेरी त्रुटिपूर्ण थी। यह MySQL के साथ अपेक्षित रूप से काम नहीं करेगा, जिसका अर्थ है कि मुझे अभी भी विशेष प्रश्न लिखना है। देखें GROUP_CONCAT चेंज ग्रुप बाय ऑर्डर
Zend\Db\Sql\Select
. के कोड को पढ़ने के बाद मुझे ये पंक्तियाँ मिलीं:
if ($table instanceof Select) {
$table = '(' . $this->processSubselect($table, $platform, $driver, $parameterContainer) . ')';
} else {
$table = $platform->quoteIdentifier($table);
}
तो उत्तर वास्तव में काफी सरल है, मुझे केवल एक Zend\Db\Sql\Select
प्रदान करना था। from()
. पर आपत्ति करें , इसे Zend\Db\Sql\Expression
. में लपेटे बिना जैसे मैं ZF1 के साथ करता था।
कोड उदाहरण:
$adapter = $this->getAdapter(); // Returns Zend\Db\Adapter\Adapter
$sql = new Zend\Db\Sql\Sql($adapter);
$from = $sql->select()
->from(static::$table)
->columns(array(
'full_name',
'value',
))
->order('id DESC');
$select = $sql->select()
->from(array(
'subtable' => $from,
))
->columns(array(
'full_name' => 'full_name',
'value' => new Expression('GROUP_CONCAT(value)'),
))
->group('full_name')
->order('full_name DESC');
$selectString = $sql->getSqlStringForSqlObject($select);
$resultSet = $adapter->query($selectString, $adapter::QUERY_MODE_EXECUTE);
return $resultSet->toArray();