0

次のコードは、クラス Zend\Db\Sql\Expression のオブジェクトを文字列に変換できませんでしたというエラーを返します。

$select->join(array('tt' => 'discuss_thread_tag'),
                  'tt.tag_id = discuss_tag.tag_id',
                  array(),
                  'left')
           ->join(array('t' => 'discuss_thread'),
                  't.thread_id = tt.thread_id',
                  array(new Expression('COUNT(thread_id) AS thread_count')),
                  'left')
           ->join(array('m' => 'discuss_message'),
                  'm.thread_id = t.thread_id',
                  array(new Expression('MAX(post_time) AS last_post')),
                  //'*',
                  'left')
           ->group(array('discuss_tag.name', 'discuss_tag.slug', 'discuss_tag.description'));

私は何を間違っていますか?

4

1 に答える 1

3

私はこれをテストしていませんが、次のようにする必要があると思います。

$select->join(array('tt' => 'discuss_thread_tag'),
                      'tt.tag_id = discuss_tag.tag_id',
                      array(),
                      \Zend\Db\Sql\Sql::JOIN_LEFT)
               ->join(array('t' => 'discuss_thread'),
                      't.thread_id = tt.thread_id',
                      array('thread_count' => new Expression('COUNT(thread_id)')),
                      \Zend\Db\Sql\Sql::JOIN_LEFT)
               ->join(array('m' => 'discuss_message'),
                      'm.thread_id = t.thread_id',
                      array('last_post' => new Expression('MAX(post_time)')),
                      \Zend\Db\Sql\Sql::JOIN_LEFT)
               ->group(array('discuss_tag.name', 'discuss_tag.slug', 'discuss_tag.description'));

    // Debug query
    $sql = new \Zend\Db\Sql\Sql();
    var_dump($sql->getSqlStringForSqlObject($select));
于 2013-11-08T09:34:31.953 に答える