Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP模型视图控制器(MVC)主动重新记录方法_Php_Ruby On Rails_Activerecord_Model View Controller - Fatal编程技术网

PHP模型视图控制器(MVC)主动重新记录方法

PHP模型视图控制器(MVC)主动重新记录方法,php,ruby-on-rails,activerecord,model-view-controller,Php,Ruby On Rails,Activerecord,Model View Controller,我正在构建自己的PHP MVC框架。()我想知道如何做类似Rails Active Record的事情 例如: Book.where('reserved = true').limit(10).offset(5) 这将转化为 SELECT * FROM Book WHERE reserved = true LIMIT 10 OFFSET 5; 因为这些类方法是链接的,所以它的计算结果都是该SQL语句。我找不到如何使链接类方法在PHP中彼此交互。我创建了这个类FlowingQuery,它将Arr

我正在构建自己的PHP MVC框架。()我想知道如何做类似Rails Active Record的事情

例如:

Book.where('reserved = true').limit(10).offset(5)
这将转化为

SELECT * FROM Book WHERE reserved = true LIMIT 10 OFFSET 5;
因为这些类方法是链接的,所以它的计算结果都是该SQL语句。我找不到如何使链接类方法在PHP中彼此交互。我创建了这个类FlowingQuery,它将ArrayObject扩展为一个数组,但我仍然不知道如何让类彼此交互。目前我有一个
where
类方法,它返回数组中的所有对象,然后
limit
计算返回的数组中对象的数量,只返回其中的10个

这实际上并没有转换成SQL

有什么想法或建议吗


谢谢

如果方法在同一个类中,那么要使它们可链接,可链接方法需要返回$this

public function doSomething()
{
    // Do stuff

    return $this;
}

检查一下Laravel雄辩的ORM,它在PHP中实现了ActiveRecord模式。是一个反模式,因为它通过在同一个类中合并域业务逻辑和持久性逻辑而违反了SRP。当数据库模式变得复杂并积累了复杂性时,它就不得不进行测试,并受到性能问题的困扰。您应该采用这种模式。@arieljuod这是一个很好的资源。@tereško您有什么建议吗?有我能阅读的资源吗?谢谢你们两位time@CarlinoGonzalez阅读将是一个良好的开端。这就是之前两个相互关联的例外的来源。