使用 INNER JOIN 加载模型

tem*_*uri 4 phalcon

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

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

谢谢!

Woo*_*Dzu 5

我确信您可以使用查询构建器进行简单的连接,例如:

<?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();
Run Code Online (Sandbox Code Playgroud)

或者文档中的 PHQL 示例:

<?php

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

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

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

然后,我将重载模型的 findFirst() 方法以利用上述代码并将结果值分配给模型的属性。