Kohana ORM。在View中使用Model对象

时间:2015-04-16 00:14:53

标签: orm kohana

我是Kohana的新手和整个ORM方法,并且无法在ORM中找到此代码,或者不在ORM中。 因此,Model中的这个函数返回一个对象

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);

这就是问题:我可以在视图中使用Model中的对象:

 <?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? 感谢

1 个答案:

答案 0 :(得分:1)

  

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

这完全取决于你如何处理。

就个人而言,我将它们作为ORM对象留在视图中,并注意不要在我的视图中读取访问权限以外的任何内容。

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

$simple_comments = json_decode(json_encode($comments))

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

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