Call to a member function isAttributeRequired() on array

122
15 октября 2019, 15:20

У меня есть модель товаров Products и модель количества товаров Amounts. В модели Products есть связь

public function getAmounts()
{
    return $this->hasMany(Amounts::className(), ['product_id' => 'id']);
}

Пытаюсь создать форму, поле для количества хочу записать так

<?=$form->field($model->amounts, 'amount')->textInput(['class' => 'form-control m-input', 'placeholder' => ''])->label(false)?>

И получаю ошибку

Call to a member function isAttributeRequired() on array

Почему так происходит?

Answer 1

Как вариант. Создайте в модели Products вирутальное поле amount.

На форме:

<?=$form->field($model, 'amount')->textInput(['class' => 'form-control m-input', 'placeholder' => ''])->label(false)?>

В afterSave() сохраняйте связанную модель.

Способов много..

Answer 2

getAmounts() Возвращает массив данных. Судя по вопросу, необходим count моделей Amounts. Только не совсем понятно, для чего это выводить в поле input? Amounts::className() давно пора заменить на Amounts::class, так быстрее работает.

UPD
Вероятно, код реляции может выглядеть таким образом:

public function getAmounts()
{
    return $this->hasOne(Amounts::className(), ['product_id' => 'id']);
}

А в форме надо указать конкретное поле из модели Amounts

<?=$form->field($model->amounts, 'fieldNameFromAmountTable')->textInput(['class' => 'form-control m-input', 'placeholder' => ''])->label(false)?>

Для генерации инпута нам надо в него скинуть модель и название поля. В данном случае hasOne() вернет модель. И проверку не забыть сделать, если ничего не вернет, тогда надо будет создать новую модель.

READ ALSO
Smarty создает пустые compiled файлы

Smarty создает пустые compiled файлы

такая проблема: Раньше сайт стоял на линуксе, при переносе на мой локальный веб-сервер на windows смарти начал создавать пустые compiled файлы, в которых...

103
msChart вывод результата через ajax

msChart вывод результата через ajax

Как вставить данные в график из ajax запроса?

94
Хостинг заражен вирусом

Хостинг заражен вирусом

Хостинг заражен вирусом и все сайты на ном (4) перенаправляется на другие сайтыВ начале всех файлах index

96
Работа с переменными JS в PHP файле

Работа с переменными JS в PHP файле

Возник очень идиотский вопрос

112