菲尔康-三桌关系

时间:2018-07-02 08:42:48

标签: php orm phalcon

我有一个phalcon项目(phalconphp.com)

我想创建3表关系User-> user_roles <-角色

用户表:id,role_id

User_roles:id,user_id,role_id

角色:ID,代码

我做到了:

Users.php

 $this->hasMany(
            'id',
            'UserRoles',
            'user_id'
        );

UserRoles.php

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

    $this->belongsTo(
        'role_type_id',
        'Roles',
        'id'
    );

Roles.php

$this->hasMany(
            'id',
            'UserRoles',
            'role_type_id'        
        );

我只想在我的控制器中:

$users = Users::find();

 foreach ($users as $user) {
            echo $user->id;
            echo $user->roles->code;
}

但是得到:访问未定义的属性Users :: roles

有人可以帮我解决这个问题吗? 参考:https://docs.phalconphp.com/en/3.3/db-models-relationships

2 个答案:

答案 0 :(得分:0)

唯一的问题是,Phalcon找不到我的表名(尽管它是对机器人示例的完全重写)。

我要做的就是为关系中的表指定别名。

答案 1 :(得分:0)

@chazecka关于Phalcon关系的重要注意事项:

它们使编码更容易,但是却创建了大量的查询。如果您关心性能,请留意正在执行的查询数量,有时该数量可能不是最佳选择。在这种情况下,您可能需要使用联接和https://olddocs.phalconphp.com/en/3.0.1/api/Phalcon_Mvc_Model_Query_Builder.htmlhttps://docs.phalconphp.com/zh/3.3/db-phql