您确定这是您要使用的结构吗?通常在使用 ORM 时,您希望一个类代表特定的一方——在这种情况下,它将是用户。像“管理”这样的词不属于模型的标题,因为它应该是通用的。
由于您的用户此时不需要任何验证/特定方法,因此您的类可能如下所示(/models/User.php):
<?php defined('SYSPATH') or die('No direct access allowed.');
class Model_User extends ORM {
protected $_table_name = 'User';
}
使用 Kohana 的约定可能是更好的做法,数据库中的表名是users
(因为该表包含多个用户,但 Model_User 类的对象只包含一个用户)。
您不再需要任何方法,尤其是不需要使用数据库的方法。由于extends ORM
,PHP 知道如何处理该对象以及何时运行什么数据库查询等。
现在在您的控制器中,您可以使用通过 ORM 提供的 Kohana 方法,然后执行以下操作:
$users = ORM::factory('User')->find_all();
foreach ($users as $user) {
// access one user's data via $user->id, $user->username, etc.
}
那么,如何在 Views 中使用它呢?您基本上需要两个模板,一个包含外部结构(您的表格,除此之外的所有内容),一个用于内部结构(表格的一行),这可以像下面这样完成:
/views/main.php
<h1><?php echo $title; ?></h1>
<table>
<?php echo $rows; ?>
</table>
/views/userdetail.php
<tr>
<td><?php echo $user->username; ?></td>
<td><?php echo $user->email; ?></td>
</tr>
您管理此的控制器部分可以这样完成
$view = View::factory('main');
$view->title = "Hello, this is the list of users";
$userlist = "";
$users = ORM::factory('User')->find_all();
foreach ($users as $user) {
$detail_view = View::factory('userdetail');
$detail_view->user = $user;
$userlist .= $detail_view; // .= appends $detail_view to $userlist
}
$view->rows = $userlist;
我希望这至少能让您大致了解 ORM 和 Kohana 中的视图。如果您还有其他问题,请尝试Kohana用户指南,它通常提供很好的示例,例如ORM和视图。
Kohana 非常灵活,因此您可以轻松更改系统,例如为模型设置非标准表名,就像您所做的那样。但是,这些约定通常非常复杂,尤其是当您开始学习 PHP 和 Kohana 的使用时,我宁愿建议您同时使用它们——即使需要额外的一两个小时来弄清楚如何去做——而不是做自己的事。