【问题标题】:Kohana ORM. Usung Model object in ViewKohana ORM。视图中的 Usung 模型对象
【发布时间】:2015-04-16 00:14:53
【问题描述】:

我是 Kohana 和整个 ORM 方法的新手,在 ORM 中是否可以接受此代码的任何地方都找不到。 所以,模型中的这个函数返回一个对象

public function get_comments()
{
    $comments = ORM::factory('comment')->find_all();
    if ($comments)
    {
        return $comments;
    }
    else
        return array();
}

Controller 将此对象发送给 View

$content = View::factory('/index')
         ->bind('comments', $comments);
$comments = Model::factory('comment')->get_comments();
$this->response->body($content);

这是一个问题:我可以像这样在视图中使用模型中的对象吗:

 <?php foreach($comments as $comment): ?>
      <div>
          <h5><?php echo HTML::chars($comment->user->login); ?>:</h5>
          <?php echo HTML::chars($comment->text); ?>
      </div>
 <?php endforeach; ?>

在 ORM 中是否可以接受,或者我应该以某种方式从对象创建一个数组并将其发送到 View? 谢谢

【问题讨论】:

  • 我不明白你为什么需要这个额外的方法?不能直接在控制器里做$comments = ORM::factory('comment')-&gt;find_all()吗?
  • 如果您使用find_all() 方法,请使用if (count($comments &gt; 0)) 而不是if ($comments)

标签: orm kohana


【解决方案1】:

在 ORM 中是否可以接受,或者我应该以某种方式从对象创建一个数组并将其发送到 View?

这完全取决于您的喜好。

就我个人而言,我将它们作为 ORM 对象保留在视图中,并注意在我的视图中除了读取访问权限之外不要做任何事情。

如果您在一个更大的团队中工作,并且想要确保除了从视图中的模型读取之外没有人做任何事情,您可以使用 json_encode/decode 轻松地将它们转换为数组或简单对象:

$simple_comments = json_decode(json_encode($comments)).

json 序列化/反序列化对于大型对象集可能会很慢,在这种情况下你可以使用 ORM 的 as_array 方法:

$comments_as_arrays = array_map(function($c) { return $c-&gt;as_array(); }, $comments-&gt;as_array()).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多