yii2 ->load() и ->attrubutes = ... -- Какая разница при загрузке значений, данных в ActiveRecord, Model

Что делает вызов $model->load()

load() пытается найти в переданном массива подмассив, который имеет имя. которое доложно быть у "формы" модели -- обычно это имя самой модели.

Что делает вызов $model->attributes =...

Присваивание же методом вроде:

$comment->attributes = Yii::$app->request->post('Comment');

Позволяет сделать то же самое (массово заполнить поля модели из массива), но уже поиском значений не в подмассиве, а в самом передаваемом массиве -- например, в последнем примере это подмассив массив $_POST.

То есть:

  • ->attributes = позволяет использовать произвольное имя массива -- то есть имя (идекс по которому лежат эти поля) не важно вообще,
  • в то время как load() ищет подмассив с имененем, совпадающем с именем модели, а уже из этого правильно именнованного подмассива извлекает атрибуты.