本当に、これはあなたが使用したい構造ですか? 通常、ORM を使用する場合、1 つのクラスで特定のパーティ (この場合はユーザー) を表す必要があります。「管理」などの言葉は、普遍的なものであるため、モデルのタイトルには含まれません。
現時点では、ユーザーは検証や特定のメソッドを必要としないため、クラスは次のようになります (/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 のオブジェクトは 1 人のユーザーしか保持しないため)。
これ以上のメソッドは必要ありません。特に、DB を操作するメソッドは必要ありません。のおかげで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.
}
では、これをビューでどのように使用しますか? 基本的に 2 つのテンプレートが必要です。1 つは外部構造 (テーブル、それを超えるすべてのもの) を保持し、もう 1 つは内部 (テーブルの 1 行) を保持します。これは次のように実行できます。
/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 の使用を学び始めている場合は、代わりにそれらを使用することをお勧めします。自分のことをすること。