我只是想了解Kohana,所以如果我以错误的方式解决这个问题,请告诉我!
我想对输出中的结果进行分组。我在vanilla-PHP/PDO中执行此操作的方法是准备一个查询,然后在输出结果中执行它。不过,我无法在Kohana(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 ?>
我得到"类型"标题正常,但我在每个类型中没有得到任何术语。
任何建议表示赞赏!
> execute()
返回一个特殊对象(Database_Result
),所以你需要这样的东西:
$items = $terms->parameters($params)->execute();
foreach ($items as $term): ?>
...