假设我有一个Phalcon\Mvc\Model使用::findFirst($id).
如何换入将加载模型行并在其他表上执行 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();
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() 方法以利用上述代码并将结果值分配给模型的属性。