Phalcon - 用连接搜索

时间:2015-07-06 19:23:52

标签: php search orm models phalcon

我有2个型号: - 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();

感谢您提前

1 个答案:

答案 0 :(得分:1)

您应该使用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);
}

事情是,对于这种情况下的更多用户,例如在预告用户而不是通过帖子进行预告时,引擎会发送单独的查询,这可能会给服务器带来很多压力,具体取决于具体情况。 Here你还有更多主题。