Phalcon - 使用连接搜索

Phalcon - search with joins

我有两个型号: - models/Users.php - models/Posts.php

用户有:

$this->hasMany('id', 'Posts', 'id_user');

帖子有:

$this->belongsTo('id_user', 'Users', 'id');

这很好。

是否可以使用 phalcon ORM 创建搜索?

我知道我可以这样做(使用 leftjoin、innerjoin 等):

$this->modelsManager->executeQuery($sql_with_joins, $bind_array);

或像这样使用 queryBuilder:

...
->columns('id, name')
->from('Users')
->join('Posts)
...
->orderBy('name')

但是如何使用 ORM 结构创建搜索:

Users::find( .. here join and search on Posts model fields .. )->toArray();

感谢提前

您应该使用 queryBuilder 以获得最佳性能。无论如何,如果你给你的关系加上别名并坚持使用对象而不是数组,你就可以做出一些技巧,比如:

// in users model
$this->belongsTo(
    'id',   // local id
    'Posts', // model relation
    'user_id', [ // related id
        'alias' => 'posts' // alias for related records
    ]
);

$user = Users::findFirst(); // first user from table, just for example

// foreach($user->posts as $post) // using exact alias name
foreach($user->getPosts() as $post) { // using getter for alias
    var_dump($post);
}

事实是,在这种情况下,对于更多用户,例如当对用户进行 foreaching 而不是对帖子进行 foreaching 时,引擎会发送单独的查询,这可能会给服务器带来很大压力,具体取决于情况。 你的话题有点多了。