Joomla:如何在MVC框架内的组件中一次更新多行



刚开始PHP和Joomla的开发,有一个很大的障碍我无法理解。

在后端构建评估工具。我有一个表("问题"),其中包含一组按部分(1-9)分组的问题。我有另一个表("学生"),它将通过获取所有注册用户来填充,显示一个用户和部分以及问题。然后老师会检查他们是否已经完成了这些问题。

问题表:

questionID  sectionID   question    
1           1           Blah Blah 1
2           1           Blah blah 2
3           2           Bork bork
4           3           Bork de bork

学生表:

id  userID      questionID  passed
1   85          1           1
2   85          2       
3   85          3           
4   85          4           1
5   85          5           1
6   92          1           1
7   92          2           1
8   92          3                   
9   92          4           
10  92          5           1

计划使用INSERT…ON DUPLICATE KEY UPDATE,因此如果"students"表中不存在值,它将只更新每一行,如果值确实存在,则会更新它们(以及时间戳和其他一些字段)。

我很确定我可以构建查询(欢迎建议!)但现在我不知道如何使用Joomla的MVC框架来实现这一点。看起来jTable不适合返回多行,这意味着使用JModelList。。。。但是,如何使用Joomla的功能来制作一个保存按钮(JToolbar?),该按钮将根据该行是否存在进行更新或插入?感觉我拥有所有的碎片,但不知道它们是如何组合在一起的。学生视图非常简单,一个控制器/model/view.html.php/tmpl-default.php。

参考文献:

http://www.sourcecodester.com/php/3863/updating-multiple-rows-mysql-using-php.html
http://forum.joomla.org/viewtopic.php?p=2263231
http://forum.joomla.org/viewtopic.php?p=2406831
http://forum.joomla.org/viewtopic.php?p=1745675
http://forum.joomla.org/viewtopic.php?p=1675454 (promising but dated)
http://forum.joomla.org/viewtopic.php?p=2506722
http://stackoverflow.com/questions/1305863/update-multiple-rows
http://docs.joomla.org/JModelList/1.6
http://docs.joomla.org/JModelList::getListQuery/1.6
http://docs.joomla.org/Using_the_JTable_class
http://docs.joomla.org/How_to_use_the_JTable_class
http://docs.joomla.org/JTable
http://docs.joomla.org/JTable/getobjectslist  (promising...maybe?)

问题:

  • 如何使用Joomla的MVC框架进行多行更新。。。假人。

  • 一切都去哪儿了?

  • 如果有不同的方法,我完全愿意接受建议。

谢谢!

编辑

要意识到这可能太宽泛了。这里有更多:

  • 我已经阅读了Joomla MVC指南("这里有一些代码-PLOP")和Lynda(更好,但也在"这里有某些代码-POLP"类别中)。

  • 我已经使用这些指南设置了一些简单的表视图/更新。其中包括制作一个返回所有值的视图和另一个提取一条记录(编辑或新建)的视图,修改XML文件以考虑不同的数据输入类型,等等

简而言之,我的困惑是这样的。使用这些指南,使用JTable的编辑视图似乎意味着显示一条记录。要显示多个记录,请使用JModelList。那么,您使用什么来显示多个记录并更新它们呢?或者你只是忽略了他们应该做的事情,只是在那里抛出一个循环更新?尝试以正确的方式学习和做这件事,这比预期的要难理解一些。

再次感谢!

以下是一些建议:

  1. 使用Joomla的数据库类来运行数据库查询、插入、更新等:

http://docs.joomla.org/How_to_use_the_database_classes_in_your_script

  1. 本教程将向您介绍Joomla如何实现MVC:

http://docs.joomla.org/Developing_a_Model-View-Controller_Component_-_Part_1

此外,当涉及到为Joomla MVC组件构建骨架结构时,这是非常方便的:

http://www.alphaplug.com/index.php/products/mvc-generator-online.html

希望这能有所帮助。

您可能应该使用JDatabase:

http://docs.joomla.org/JDatabase/1.6

如果要检索多行,请使用JDatabase::loadObjectList、JDatabase::loadRowList或JDatabase::loadAssocList方法,具体取决于需要对象、数组还是关联数组。

要更新多行,请使用JDatabase::query或JDatabase::queryBatch方法。

通常,当存在所描述的插入模式(即单行编辑)时,我使用JTable来提供帮助:

http://docs.joomla.org/Using_the_JTable_class#Create.2FUpdate

要更新多行,我将使用JDatabase方法。Joomla在调用自己的内容文章列表时使用JDatabase,请参阅components/com_content/models/articles.php,请参阅调用:

$db=$this->getDbo();

这里对此进行了解释:

http://docs.joomla.org/Accessing_the_database_using_JDatabase

我不确定,但尝试使用JTable访问多行,只需使用:

$rows->load();

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新