@AUN

Yii2, relation, join. Как правильно?

Привет!
Разбираюсь с relation, мне необходимо получить список всех(rbac) прав конкретной роли.
В sql это будет выглядить так:
select c.name from vkl_auth_item_child t join vkl_auth_item c on t.child=c.name and  c.type=2 and t.parent="FIRST2"

Как сделать это череp AR?
class AuthItemChild extends \yii\db\ActiveRecord
{ ...  public function getChildItem()
    {
        return $this->hasOne(AuthItem::className(), ['name' => 'child']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getParentItem()
    {
        return $this->hasOne(AuthItem::className(), ['name' => 'parent']);
    }

}


Пытаюсь сделать через AR получается говнокод типа:
$selectPermiss=AuthItemChild::find()->joinWith('childItem')
                    ->where(AuthItem::tableName().'.type='.AuthItem::$permission.' and  '.AuthItemChild::tableName().'.parent="'.$name.'"')
                    ->asArray()->all();
  • Вопрос задан
  • 8973 просмотра
Пригласить эксперта
Ответы на вопрос 1
vyachin
@vyachin
Ищу работу
class AuthItemChild extends \yii\db\ActiveRecord
{
}

class AuthItem extends \yii\db\ActiveRecord
{
     public function getChildItems()
    {
        return $this->hasMany(AuthItem::className(), ['name' => 'child'])->viaTable(AuthItemChild::className(), ['parent'=>'name']);
    }
}

$item = AuthItem::findOne(['name'=>'FIRST2']);
$childItems = $item->childItems();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы