foreach ($motivationBuhValue as $value) {
$motivationBuh = MotivationBuh::findOne([$value->motivation_buh_id]);
+ // Поиск записи в Motivation по году, месяцу и store_id
$motivation = Motivation::findOne([
'year' => $motivationBuh->year,
'month' => $motivationBuh->month,
'store_id' => $value->store_id,
]);
-
+ // Если не найдено, создаем новую запись Motivation
if (!$motivation) {
$motivation = new Motivation();
$motivation->setAttributes([
'year' => $motivationBuh->year,
'month' => $motivationBuh->month,
- 'store_id' => $value->store_id
+ 'store_id' => $value->store_id,
]);
$motivation->save();
}
+ // Поиск всех записей в MotivationValue с указанными условиями
+ $motivationValues = MotivationValue::find()
+ ->andWhere([
+ 'motivation_id' => $motivation->id,
+ 'motivation_group_id' => $value->motivation_group_id,
+ 'value_id' => $value->value_id,
+ ])
+ ->all();
- $motivationValue = MotivationValue::findOne([
- 'motivation_id' => $motivation->id,
- 'motivation_group_id' => $value->motivation_group_id,
- 'value_id' => $value->value_id,
- ]);
+ if (count($motivationValues) > 1) {
+ // Если найдено несколько записей, удаляем все
+ foreach ($motivationValues as $motivationValue) {
+ $motivationValue->delete();
+ }
+ // Создаем новую запись
+ $motivationValue = new MotivationValue();
+ $motivationValue->setAttributes([
+ 'motivation_id' => $motivation->id,
+ 'motivation_group_id' => $value->motivation_group_id,
+ 'value_id' => $value->value_id,
+ 'value_type' => MotivationCostsItem::DATA_TYPE_FLOAT,
+ 'value_float' => $value->value_float,
+ ]);
+ $motivationValue->save();
- if ($motivationValue) {
+ } elseif (count($motivationValues) === 1) {
+ // Если найдена одна запись, обновляем её
+ $motivationValue = $motivationValues[0];
$motivationValue->value_float = $value->value_float;
- } else {
+ $motivationValue->save();
+ } else {
+ // Если запись не найдена, создаем новую
$motivationValue = new MotivationValue();
$motivationValue->setAttributes([
'motivation_id' => $motivation->id,
'value_type' => MotivationCostsItem::DATA_TYPE_FLOAT,
'value_float' => $value->value_float,
]);
+ $motivationValue->save();
}
-
-
- $motivationValue->save();
}
$info = ' ================ test Task ' . $taskNum . ' stop ================';