0

模型.php

<?php defined('SYSPATH') or die('No direct script access.');

class Model_manage_feeds extends ORM  {
    protected $_table_name = 'User';
     public function manage_user(){

     $query = DB::select()->from('User');
     return $query;
     }
}

控制器/user_details.php

public function action_manage_user() {
    $this->template->title = "Manage User";
    this->template->content = View::factory('manage_user');
}    

看我的数据库结构,

ID 用户名 密码 电子邮件 is_active

  1. 约翰 xxxxxx john@gmail.com 1

  2. 乔治 xxxxxx george@aol.com 1

我想从表中显示用户名和电子邮件 ID。我正在学习 php 和 kohana,我知道如何从 kohana 教程中插入、编辑和删除现在我正在尝试显示数据库中的数据。我不知道如何做。

4

1 回答 1

2

您确定这是您要使用的结构吗?通常在使用 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 的使用时,我宁愿建议您同时使用它们——即使需要额外的一两个小时来弄清楚如何去做——而不是做自己的事。

于 2013-10-31T18:04:05.307 回答