
Есть, например, сущность - Challenges. И в её списке Gridview, хочу выводить колонку с названиями упражнений, которые в этот челленж входят. Эти упражнения хранятся в отдельной таблице Упражнения и связаны с Челленжами с помощью связаннной таблицы.
Для этого в GridView у Челленджей добавлю столбец, где буду выводить через пробел все упражнения, которые относятся к челленджу.
[ 'attribute'=>'challengeexercises', 'label'=>'Упражнения', 'format' => 'raw', 'value'=>function($model){ return implode(' ', $model->challengeexercisesLinks); }, ],
Модель Челлендж:
class Challenge extends BaseModel { public $newchallengeexercises; /** * @inheritdoc */ public static function tableName() { return 'challenge'; } /** * @inheritdoc */ public function rules() { return [ ... [['newchallengeexercises','purpose'], 'safe'], [['challengeexercises_list'], 'each', 'rule' => ['integer']], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ ... 'challengeexercises_list' => 'Упражнения в челленже', ]; } public function behaviors() { return [ [ 'class' => \voskobovich\behaviors\ManyToManyBehavior::className(), 'relations' => [ 'challengeexercises_list' => 'challengeexercises', ], ], ]; } public function getChallengeexercises() { return $this->hasMany(ElementExercise::className(), ['id' => 'exercise_id']) ->orderBy(['level'=>SORT_ASC]) ->viaTable('exercise_to_challenge_bind', ['challenge_id' => 'id']); } public function getChallengeexercisesLinks() { $selectedtagnames=array(); foreach($this->challengeexercises_list as $tag) { $title = Html::encode(ElementExercise::findOne($tag)->name); $selectedtagnames[]=Html::a($title, Url::toRoute(['/element-exercise/view', 'id'=>$tag]), $linkOptions=array('class'=>'btn-xs btn btn-default muscles', 'title'=>$title, 'data-pjax' => '0')); } return $selectedtagnames; }...
Здесь создал связь getChallengeexercises()
1 ноября 2022, Программирование, веб-кодинг / Метки: GridView
16 января 2023

Yii2-user сменить текущего пользователя или переход на другого пользователя (SwitchIdentity)
Impersonate User / Become another user
12 декабря 2022

Yii2: uclead MultipleInput + kartik DepDrop
Настраиваем множественные поля с выпадающим списком