MVC:视图循环查询结果可以吗?

4 php database model-view-controller

我是MVC的新手.你被警告了...

我有User模型可以将MySQL结果资源返回给控制器.控制器将MySQL资源传递给要显示的视图.是否可以使用数据库结果获取功能在视图中打印查询结果?

<?php while($row = some_fetching_function($database_result_resource): ?>
<tr>
   <td><?=$row['Username']?></td>
   ...etc
</tr>
<?php endwhile; ?>
Run Code Online (Sandbox Code Playgroud)

这对我来说不合适.它是紧密耦合的,对吧?模型必须返回某种类型的数据库资源,并且视图必须使用某种类型的数据库提取方法来遍历它.可以解耦而不会在结果中循环两次吗?我想你必须遍历模型中的结果来创建结果数组,然后再次在视图中.

综上所述:

  1. 视图是否可以显示数据库结果资源,同时遵循MVC设计模式?
  2. 是否可以避免两次循环数据,同时避免与数据库紧密耦合?

Jan*_*nen 6

如果你抽象出代码的数据库部分,我认为这是可以接受的.例如,您可以提供可以迭代的"行集"(实现Iterable接口或其他东西).在幕后,此对象可以包含数据库结果并使用提取功能.

基本上这个想法是你的视图处理一个通用的行集,并不意味着它来自数据库或任何其他来源,这样你就减少了耦合.