Здравствуйте. Организовываю мультизагрузку данных, всё сводиться к тому, что пользователь может выбрать категорию услуг и услуги, которые он предоставляет, и этих самих услуг может быть несколько.
Решил, всё же, не использовать batchInsert(), а обойтись AR, но по итогу получаю ошибку:
Call to a member function isAttributeRequired() on a non-object
Опытным путем было установлено, что первые 3 итерации проходят без проблем и их всего 3и должно быть. Но почему-то запускается 4-я, из-за которой и получается эсепшен.
Конечно, можно было бы посчитать кол-во ячеек в массиве и на последней делать break, но хочется сделать правильно и узнать конкретно в чём проблема.
Реализовал код:
if($category->load(Yii::$app->request->post()) && $category->validate()){
$services = Yii::$app->request->post('UserService');
foreach ($services as $service){
$new_service = new UserService();
$new_service->user_id = Yii::$app->user->id;
$new_service->service_id = $service['service_id'];
}
}
В $services содержится следующий массив:
array(3) {
[0]=>
array(1) {
["service_id"]=>
string(1) "1"
}
[1]=>
array(1) {
["service_id"]=>
string(1) "1"
}
[2]=>
array(1) {
["service_id"]=>
string(1) "1"
}
}