使用INNER JOIN加载模型

时间:2014-02-11 23:59:22

标签: phalcon

假设我使用Phalcon\Mvc\Model加载::findFirst($id)

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

谢谢!

3 个答案:

答案 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))