在另一个表中具有条件的Phalcon模型find()

光明使者

所以我有2张桌子

books
id        name       status_id
-------------------------------
1         a          0
2         b          2
...

status
id        description
---------------------
0         borrowed
1         available
2         lost

Phalcon模型

class Books extends ModelBase {

    public function initialize() {
        $this -> belongsTo("status_id", "Status", "id");
    }
}

class Status extends ModelBase {
    public function initialize() {
        $this -> hasMany('id', "Books", 'status_id');
    }
}

我想提取所有状态描述为“丢失”的图书。这是我到目前为止所拥有的:

$lostBooks = Books::find(
    'conditions' => "description=:status:",
    'bind' => array(
        'status' => 'lost'
    ),
);

更新:通过解决方法,我得到了想要的东西

$lostStatus = Status::findFirst("description='Closed'");
$lostBooks = Books::find(
    'conditions' => "status_id=:id:",
    'bind' => array(
        'id' => $lostStatus -> id
    ),
);

但是我觉得我没有使用预期的方式来执行这些任务,因此,如果您有更好的任务,请在下面回答。

耶戈

您可能有两种方法:

1.通过 queryBuilder

直接从模型进行联接很难实现。这就是为什么queryBuilder设计的原因-例如,仅当您愿意获取数据时,模型才查询数据。通过访问所谓的加入$books->getStatus()有关更多信息,请搜索文档:h示例关于SO的优化,这里还有一个有用的话题,因此您将知道为什么不总是直接使用模型是个好主意。

2.通过创建一个单独的模型

为了使它变得简单,清晰,但也许不是大多数性能(取决于使用情况),因为不久前(Phalcon 1.3.2?),您可以创建一个带有附加条件的单独模型(未经测试的示例):

class LostBooks extends Books {

    public function initialize() {
       $this -> belongsTo("status_id", "Status", "id",
       [
            'alias' => 'status',
            'params' => [
                'description' => 'lost'
            ]
       ]);
    }
}

正确声明之后,您就可以通过

$lostBooks = LostBooks::find();

PS:使用array()代替[],如果您是PHP 5.4之前的用户,请养成一些习惯。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在另一个单元格中具有条件的SUMIF函数

来自分类Dev

从具有条件的表中选择 DISTINCT 并从另一个表中进行排序

来自分类Dev

使用 MySQL 从具有条件和 ID 的另一个表更新表

来自分类Dev

根据另一个有条件的表更新表

来自分类Dev

有条件地选择行并有条件地插入到另一个表中

来自分类Dev

从另一个数据框中减去具有条件的数据框中的值

来自分类Dev

熊猫:具有条件的另一个数据框中的新数据框

来自分类Dev

从R中的另一个列表创建具有条件值的新列表(子列表)

来自分类Dev

将有条件的行复制到另一个工作表

来自分类Dev

将表数据从一个数据库复制到具有条件的另一个数据库

来自分类Dev

有条件地使用辅助表中的另一个值,否则使用第一个表中的值

来自分类Dev

MySQL项目设计-根据另一个选择查询中的行有条件地从一个表中选择

来自分类Dev

获取在另一个模型中具有条目的所有对象

来自分类Dev

获取在另一个模型中具有条目的所有对象

来自分类Dev

Python有条件的一个或另一个

来自分类Dev

将一个有条件的列从一个表复制到另一个表

来自分类Dev

pyspark:如何在具有条件的列中填充值并用另一个数据框中的列替换

来自分类Dev

检查数据帧中的值是否存在于具有条件的另一个数据帧中

来自分类Dev

有条件地将特定列复制到另一个工作表

来自分类Dev

当验证在另一个表上有条件时数据库中的唯一性验证

来自分类Dev

在Excel中,如何有条件地剪切一行数据并将其永久移动到另一个工作表?

来自分类Dev

在Excel中,如何有条件地剪切一行数据并将其永久移动到另一个工作表?

来自分类Dev

角ng类,具有两个类,一个来自变量名,另一个带有条件

来自分类Dev

从另一个列表中删除带有条件的嵌套列表中的元素-Java 8

来自分类Dev

AngularJS模板:如何有条件地将标签包装在另一个标签中

来自分类Dev

有条件地将数组作为变量添加到另一个数组中

来自分类Dev

根据另一个数据帧有条件地替换数据帧中的单元

来自分类Dev

R-有条件地用另一个数据框中的值替换值

来自分类Dev

AngularJS模板:如何有条件地将标签包装在另一个标签中

Related 相关文章

  1. 1

    在另一个单元格中具有条件的SUMIF函数

  2. 2

    从具有条件的表中选择 DISTINCT 并从另一个表中进行排序

  3. 3

    使用 MySQL 从具有条件和 ID 的另一个表更新表

  4. 4

    根据另一个有条件的表更新表

  5. 5

    有条件地选择行并有条件地插入到另一个表中

  6. 6

    从另一个数据框中减去具有条件的数据框中的值

  7. 7

    熊猫:具有条件的另一个数据框中的新数据框

  8. 8

    从R中的另一个列表创建具有条件值的新列表(子列表)

  9. 9

    将有条件的行复制到另一个工作表

  10. 10

    将表数据从一个数据库复制到具有条件的另一个数据库

  11. 11

    有条件地使用辅助表中的另一个值,否则使用第一个表中的值

  12. 12

    MySQL项目设计-根据另一个选择查询中的行有条件地从一个表中选择

  13. 13

    获取在另一个模型中具有条目的所有对象

  14. 14

    获取在另一个模型中具有条目的所有对象

  15. 15

    Python有条件的一个或另一个

  16. 16

    将一个有条件的列从一个表复制到另一个表

  17. 17

    pyspark:如何在具有条件的列中填充值并用另一个数据框中的列替换

  18. 18

    检查数据帧中的值是否存在于具有条件的另一个数据帧中

  19. 19

    有条件地将特定列复制到另一个工作表

  20. 20

    当验证在另一个表上有条件时数据库中的唯一性验证

  21. 21

    在Excel中,如何有条件地剪切一行数据并将其永久移动到另一个工作表?

  22. 22

    在Excel中,如何有条件地剪切一行数据并将其永久移动到另一个工作表?

  23. 23

    角ng类,具有两个类,一个来自变量名,另一个带有条件

  24. 24

    从另一个列表中删除带有条件的嵌套列表中的元素-Java 8

  25. 25

    AngularJS模板:如何有条件地将标签包装在另一个标签中

  26. 26

    有条件地将数组作为变量添加到另一个数组中

  27. 27

    根据另一个数据帧有条件地替换数据帧中的单元

  28. 28

    R-有条件地用另一个数据框中的值替换值

  29. 29

    AngularJS模板:如何有条件地将标签包装在另一个标签中

热门标签

归档