PhalconPHP:渴望加载相关记录?

PhalconPHP:渴望加载相关记录?,php,orm,phalcon,Php,Orm,Phalcon,我想知道用Phalcon做这件事最好的方法是 我有两种模式:公司和公司 公司与公司之间有一对多的关系 当我给所有公司打电话时,就像这样: $companies = Companies::find($params) 我可以通过 $companies[0]->companyTitles 比如说。但是,有没有一种方法可以一次获取所有公司的所有文件,以便我们只对数据库进行一次调用 我正在做的是构建一个API,我希望能够发回如下内容: { "companies": [ {

我想知道用Phalcon做这件事最好的方法是

我有两种模式:公司和公司

公司与公司之间有一对多的关系

当我给所有公司打电话时,就像这样:

$companies = Companies::find($params)
我可以通过

$companies[0]->companyTitles
比如说。但是,有没有一种方法可以一次获取所有公司的所有文件,以便我们只对数据库进行一次调用

我正在做的是构建一个API,我希望能够发回如下内容:

{
    "companies": [
        {
            "id": 1,
            "name": "Bob Co"
            "companyTitles": [1, 2, 3, 4]
        },
        {
            "id": 2,
            ...
        }
 }
我只是把ID作为占位符放在那里,但你明白了。但是,从技术上讲,它可以是ID或对象。

是和否。是:您可以使用子查询将所有公司标题ID选择到单独的字段中,并手动将其摘要到数组中。事实上,没有……根据

否:如果您希望保持一对多关系,并且能够在不加载所有数据的情况下完成$companys[0]->companyTitles,那么您不能这样做。在普通sql中,这几乎是不可能的,而且非常粗糙

任何ORM都试图从直接处理sql中抽象出来,这总是会让您付出代价。与使用普通sql相比,如果不重新发明轮子和性能查询编译、非最佳查询、多个查询等,功能无法解释一切。Phalcon是一个了不起的项目,但就像其他支持ORM的框架或ORM框架一样,在这种情况下,它不会比你聪明。我已经停止使用原生的Phalcon模型,因为它遇到了太多的死胡同,它们对于简单的任务来说非常棒,但是对于更复杂的任务,它们会遇到问题


如果你的首要任务是时间,那就坚持你所拥有的。对于额外的查询,额外的10-50毫秒不会有太大变化。如果您需要一个可维护的代码库,这是一个大的、长期运行的项目,那么这是一个有风险的前进方向。当事情变得更加复杂时,这就变得非常不可靠了。使用更成熟的ORM,我个人在构建查询和手动将数据映射到模型方面取得了巨大成功–我不得不说,尽管这相当耗时。

似乎与此相关。可能想看。也证明了下面的观点;哦,好吧,这似乎是很好的代码!=本例中的性能代码。Phalcon上的人更喜欢一个简单化的ORM,它会使你的系统复杂化,而不是有可能没有那么高性能的可读代码。我想在这里补充一点,你在PHPland上的许多其他ORM都不够强大。许多其他框架,比如Yii或Laravel,当然也支持一些高级特性,比如急切的加载关系。如果Phalcon不支持这样一个简单的特性来提高我们项目的性能,而不必编写5行以上的SQL/PHQL,那就要怪它了。这不是为了比你聪明,这是基本的。在项目中填充另一个ORM有点奇怪,因为它永远不会像纯Phalcon那样表现出色。