用INNER JOIN加载模型[英] Loading Models with INNER JOIN

问题描述

假设我有一个使用 ::findFirst($id) 加载的 Phalcon\Mvc\Model.

如何换入一个自定义查询,该查询将加载模型行并在其他表上执行 INNER JOIN?

谢谢!

推荐答案

我相信您可以使用查询生成器进行简单的连接,例如:

<?php

//Getting a whole set
$robots = $this->modelsManager->createBuilder()
    ->from('Robots')
    ->join('RobotsParts')
    ->orderBy('Robots.name')
    ->getQuery()
    ->execute();

//Getting the first row
$robots = $this->modelsManager->createBuilder()
    ->from('Robots')
    ->join('RobotsParts')
    ->orderBy('Robots.name')
    ->getQuery()
    ->getSingleResult();

或文档中的 PHQL 示例:

<?php

$phql = "SELECT Robots.*
    FROM Robots JOIN RobotsParts p
    ORDER BY Robots.name LIMIT 20";
$result = $manager->executeQuery($phql);

默认情况下,假定为 INNER JOIN.不过,您可以在查询中指定 JOIN 的类型.

参考:http://docs.phalconphp.com/en/latest/reference/phql.html#creating-queries-using-the-query-builder

那么我会重载模型的 findFirst() 方法以利用上述代码并将结果值分配给模型的属性.

本文地址:https://www.itbaoku.cn/post/1739768.html