У меня есть две таблицы:
- параметры : с полями " id (серийный номер), имя (varchar), тип (int) ".
- options_activity : те же поля, что и в таблице параметров: id , name , тип и: activity_id (серийный), admin (int), date (временная метка), действие (int) .
Когда я создаю параметр, я сохраняю его как в таблице параметров, так и в options_activity. Таблица options_activity - это регистр; каждый раз, когда администратор создает / редактирует параметр, значения параметра регистрируются в таблице параметров и копируются ($ model-> attributes) в options_activity и добавляют дату, идентификатор администратора и поле действия (1 = создано, 2 = отредактировано ). Это работает нормально.
Итак, что я пытаюсь сделать, это в представлении параметра показать представление параметра, а затем показать таблицу ниже со всеми его действиями (если есть активность) . Как я мог это сделать?
Пример (просмотр):
| Вариант: 1 | «это мой вариант» | Тип: 1
Таблица действий (вариант 1):
| --------------------- ---------------------------------------- |
| Дата: 2020-01-01 | Админ: 1 | Создано | «Это мой вариант |
| Дата: 2020-01-03 | Админ: 1 | Отредактировано | 'Это вариант |
| Дата: 2020-02-10 | Админ: 2 | Отредактировано | 'Это опция |
| -------------------------------------- ----------------------- |
Я могу показать все действия, но хочу показать только действия именно этот вариант. Я не могу фильтровать по его ID.
Это мой OptionsController , actionView ($ id):
public function actionView($id)
{
$searchModel_act = new OptionsActivitySearch();
$dataProvider_act = $searchModel_act->search(Yii::$app->request->queryParams);
$model_activity_op = new OptionsActivity();
return $this->render('view', [
'searchModel_act' => $searchModel_act,
'dataProvider_act' => $dataProvider_act,
'model_activity_op' => $model_activity_op,
'model' => $this->findModel($id),
]);
}
(также пробовали другие варианты пытается передать идентификатор, например $ dataProvider_act = OpcionesActivity :: find () -> where (['id' => $ id]) -> orderBy (['fecha' => SORT_ASC]) -> all (); Или ['id' => $ model-> id], но не работает.
Мой вид :
<?=GridView::widget([
'dataProvider' => $dataProvider_act,
'filterModel' => $searchModel_act,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
'id',
'opcion',
'type',
'date',
'admin',
'action',
],
])
?>
В моей модели Я также пробовал это, чтобы получить доступ к активности, но не работает:
public function getActivity()
{
return $this->hasMany(OptionsActivity::class, ['id' => 'id']);
}
Есть идеи?
Заранее спасибо!