我有一个页表。页面可以有父页面,也可以是页面。我想选择parent_id = NULL的所有页面及其“子代”。但是当我尝试这个

public function getPages()
{
    return $this->hasMany(Page::className(), ['parent_id' => 'id']);
}

我得到一个1066不唯一的表/别名:'页面'错误...我知道如何在Yii1中解决此问题,但我不知道要在Yii2中解决此问题。

最佳答案

我已经完成了我的成绩模块,在该模块中我与成绩有亲子关系。

请按照以下步骤操作:

  • 在模型文件中编写以下代码进行自我连接。我们需要给表名加上别名。这里的“ parent ”是一个别名。
    public function getParent() {
        return $this->hasOne(self::classname(), ['id' => 'parent_id'])->
                    from(self::tableName() . ' AS parent');
    }
    
  • 在您的 View 文件中编写此代码
    [
    
      'label' => 'Parent Grade',
    
      'value' => ($model->parent_id != '' || $model->parent_id != 0) ? $model->parent->name : 'Root Grade',
    
    ],
    

  • 在我的代码中,如果parent_id字段不为null/零,则它将显示父级名称,否则显示“Root Grade”。

    关于activerecord - 在Yii2中,如何将表格与其自身连接?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30900412/

    10-13 02:12