假设我使用Phalcon\Mvc\Model
加载::findFirst($id)
。
如何交换自定义查询以加载模型行并在其他表上执行INNER JOIN?
谢谢!
答案 0 :(得分:4)
我确信您可以使用“查询”构建器进行简单连接,例如:
<?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()方法以利用上面的代码并将结果值分配给模型的属性。
答案 1 :(得分:3)
您可以这样做,您需要在扩展Phalcon MVC Model类的Model上使用查询静态方法。
$followingUsers = Users::query()
->leftJoin('Common\WideZike\Models\UsersFollowers', 'Common\WideZike\Models\Users.id = Common\WideZike\Models\UsersFollowers.followingId')
->where('Common\WideZike\Models\UsersFollowers.followerId = :userId:', array('userId' => $user->getId()))
->orderBy('Common\WideZike\Models\UsersFollowers.addedDate DESC')
->execute();
希望这有帮助!
答案 2 :(得分:0)
all_arrays = np.memmap("all_arrays.dat", dtype='float64', mode='w+', shape=(166601,8000))