У меня есть структура таблицы, например:
id //primary_key
value
changed_value //on update value column should not be updated instead changed value should be updated
status // 0 - default, 1- updated
am_id //foreign_key
Теперь для массового обновления я делаю следующее:
Model::where('am_id',$request->am_id)
->where('value',$request->value)
->update([
'changed_value' => '$request->value',
'status' => 1
]);
Однако мы не должны устанавливать статус как 1 вслепую,так как есть одно условие.Если значение столбца value
равно значению $request->value
, вместо него должно быть 0
.
Как может выглядеть этот сценарий?
Первоначально после вставки первой строкивыглядит как
+-----+-------+---------------+--------+-------+
| id | value | changed_value | status | am_id |
+-----+-------+---------------+--------+-------+
| 1 | 20 | null | 0 | 1 |
+-----+-------+---------------+--------+-------+
После 1-го обновления
+-----+-------+---------------+--------+-------+
| id | value | changed_value | status | am_id |
+-----+-------+---------------+--------+-------+
| 1 | 20 | 40 | 1 | 1 | // changed_value - 40 , status 1
+-----+-------+---------------+--------+-------+
После 2-го обновления (скажем, значение обновлено до 20), в этом случае как value === changed_value
статус должен быть обновленкак 0
не 1
+-----+-------+---------------+--------+-------+
| id | value | changed_value | status | am_id |
+-----+-------+---------------+--------+-------+
| 1 | 20 | 20 | 0 | 1 | // changed_value - 20 , status 0
+-----+-------+---------------+--------+-------+
Это означает, что во время обновления модели в приведенном ниже коде.Я хочу вставить условие, if( value == $request->value) status = 0 else status = 1
Model::where('am_id',$request->am_id)
->where('value',$request->value)
->update([
'changed_value' => '$request->value',
'status' => 1
]);