【问题标题】:CakePHP How to know user type with model relationshipCakePHP 如何通过模型关系了解用户类型
【发布时间】:2015-08-30 10:28:56
【问题描述】:

我在 CakePHP 2.6.x 中有这种关系

                                | -- ProfessorUser
Project -- ProjectUser -- User  |
                                | -- StudentUser

数据库

项目模型

public $hasMany = array('ProjectUser');

项目用户模型

public $belongsTo = array('User');

结果

$this->Project->Find('all', array('recursive' => 2));

'ProjectUser' => array(
            (int) 0 => array(
                'id' => '1',
                'project_id' => '1',
                'user_id' => '2',
                'User' => array(
                    'id' => '2',
                    'name' => 'John',
                        ....
                )
            ),
            (int) 1 => array(
                'id' => '18',
                'project_id' => '1',
                'user_id' => '1',
                'User' => array(
                    'id' => '1',
                    'name' => 'Kate',
                        ....
                )
            )

我的问题

好的,我已将用户分配给项目,但我如何知道用户是教授还是学生?

提前致谢

【问题讨论】:

    标签: database cakephp cakephp-2.0


    【解决方案1】:

    您必须向您的用户模型添加hasOne() 关系:

    var $hasOne = array ('ProfessorUser', 'StudentUser')
    

    然后,检查 User 对象是否具有有效的 ProfessorUser 或 StudentUser 子对象(即非空数组)。

    向用户添加一列来指示用户类型可能是值得的。现在 User 可以同时拥有 ProfessorUser 和 StudentUser 记录,这可能不是您想要的。

    【讨论】:

    • 感谢您的评论。添加 $hasOne 没有任何变化。对象上不存在子对象。为什么?我一直在考虑将用户类型添加到用户表中。你说得对:)
    • 也许你需要提高你的递归级别(有数据爆炸的风险,但是唉......)
    猜你喜欢
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多