0

コハナに頭を悩ませているだけなので、間違った方向に進んでいる場合はお知らせください。

結果を出力にグループ化したい。私がバニラでこれを行った方法-PHP/PDOは、クエリを準備し、出力結果内でそれを実行することでした。でも、コハナ(3.2.2)には行けません。

この場合、「用語」ページで、「用語」を「タイプ」でグループ化し、用語の各グループを「タイプ」ヘッダーで区切ります。

私の「用語」コントローラーは(簡略化):

class Controller_Terms extends Controller {

  public function action_index() 
  {
    $view = View::factory('terms');

    // types of term - for grouping terms together
    $sql = 'SELECT DISTINCT Type 
            FROM Term';
    $view->types = DB::query(Database::SELECT, $sql)->as_object()->execute();

    // list of terms - executed separately for each type
    $sql = 'SELECT TermId, Term
            FROM Term
            WHERE Type = :type';
    $view->terms = DB::query(Database::SELECT, $sql)->as_object();

    $this->response->body($view);
  }

}

また、「用語」ビューには次のものが含まれます(簡略化)。

<? foreach ($types as $type): ?>
<h2><?= $type->Type ?></h2>
<? $params = array(':type' => $type->Type);
   $terms->parameters($params)->execute(); 
   foreach ($terms as $term): ?>
    <a href="term/<?= $term->TermId ?>"><?= $term->Term ?></a>
<? endforeach // term ?>
<? endforeach // type ?>

'type'ヘッダーは問題ありませんが、各タイプ内に用語がありません。

どんな提案もありがたいです!

4

1 に答える 1

1

execute() 特別なオブジェクト( )を返すDatabase_Resultため、次のようなものが必要です。

$items = $terms->parameters($params)->execute(); 
foreach ($items as $term): ?>
...
于 2012-10-10T10:23:56.333 に答える