且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Phalcon-如何使用Phalcon模型执行SELECT IN子查询?

更新时间:2023-02-19 10:56:02

到目前为止,尚无法在Phalcon中对子查询进行建模.根据标准实施问题,还有主题.

要根据其他表格查询参数,请此处是一个答案.

要查询IN,您可以使用queryBuilder

$this->modelsManager->createBuilder()
    // ...
    ->inWhere('column', $array);

I need to know how to do i do a subquery type selection with phalcon models?

for example i want to select all the users who viewed me, they are stored in the UserView table with columns 'id','user_from','user_to' (mapped by User table user_id to either user_from or user_to)

so i want to select all the users who has a user_to as with the current user, and group by user_to make sure i only get one recorded, I wrote below function to do this but there is fundamental two problems

1. Is how to do sub-query using phalcon models

2. Is my logic correctly applied on the back-end of the DB (as i cant see real executed query)

public function getUserWithViewedMe($limit=1000000){
        return  User::query()
            ->rightJoin("XYZ\Models\UsersView")
            ->andWhere(" XYZ\Models\UsersView.user_from IN :user_id: ",
                              array('user_id' => $this->user->user_id) )
            ->group('user_id')
            ->order("XYZ\Models\UsersView.id DESC ")
            ->limit($limit)
            ->execute();
    } 

This returns empty set...

So far it is not possible to model subqueries in Phalcon. There is also topic according to standard implementation issues.

To query params according to other table, here is an answer.

To query IN you can use queryBuilder

$this->modelsManager->createBuilder()
    // ...
    ->inWhere('column', $array);