【问题标题】:Yii Relational Query with 'through'Yii 带“通过”的关系查询
【发布时间】:2016-02-02 03:13:31
【问题描述】:

晚上好,

在此页面 (http://www.yiiframework.com/doc/guide/1.1/en/database.arr#relational-query-with-through) 描述了如何使用“通过”为特定组的所有用户获取所有 cmets

class Group extends CActiveRecord
{
    ...
    public function relations()
    {
        return array(
            'roles'=>array(self::HAS_MANY,'Role','group_id'),
            'users'=>array(
                self::HAS_MANY,'User',array('user_id'=>'id'),'through'=>'roles'
            ),
            'comments'=>array(
                self::HAS_MANY,'Comment',array('id'=>'user_id'),'through'=>'users'
            ),
        );
    }
}

我怎样才能完全相反?即获取发表特定评论的用户组(基本上是评论模型)。

到目前为止,我什至无法访问“角色”表:

'user' => array(self::BELONGS_TO, 'User', 'user_id'),
'roles'=>array(self::HAS_MANY, 'Role', array('id'=>'user_id'), 'through' => 'user') // shouldn't it join User.id to Role.user_id ?

它引发以下错误:'未找到列:'where 子句'中的 1054 未知列'user.user_id'。而且它似乎与第一行有关,而不是第二行......

有什么想法吗?

真诚地, 百度云

【问题讨论】:

  • 可以尝试切换array('user_id' => 'id') ?
  • 请提及您的模型结构、它们的字段和它们的外键关系。
  • @SiZE 不起作用
  • @AnamikaShrivastava 模型结构及其字段显示在链接中
  • @Apidcloud 你会创建外键吗?

标签: database yii


【解决方案1】:

当您想要获取发表特定评论的用户组时。您必须在评论模型中添加这些关系。

    public function relations()
{
    // NOTE: you may need to adjust the relation name and the related
    // class name for the relations automatically generated below.
    return array(
        'user' => array(self::BELONGS_TO, 'User', 'user_id'),
        'roles'=>array(
            self::HAS_ONE,'Role',array('id'=>'user_id'),'through'=>'user'
            ),
            'group'=>array(
                self::BELONGS_TO,'Group','group_id','through'=>'roles'
            )
    );
}

查看文件可以得到这样的组名。

<?php echo CHtml::encode($data->group->name); ?>

希望这会对你有所帮助。

【讨论】:

  • 引发此错误:未定义属性“CBelongsToRelation.through”。如果我删除“组”数组,它仍然会引发主帖子中描述的错误。
  • 似乎最后一个数组应该是 self::HAS_ONE ,但它仍然会引发主帖子中描述的错误:'Column not found: 1054 Unknown column 'user.user_id'
  • 我们可以在这里讨论您的问题,chat.stackoverflow.com/rooms/102507/yii-help
  • 这是一个工作示例,我需要知道您是否创建了如上图所示的所有关系,请显示您的完整模型、控制器功能和视图文件。我会尽力帮助你的。
  • 明天早上我会发布这些关系。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多