Добрый день, у меня вопрос. С такой задачей я сталкиваюсь не так часто, но все же задача с точки зрения теории проста... но я не могу понять как правильно решить задачу...
Есть таблица с значениями, в таблице два поля.
Дальше я делаю запрос в базу данных для выборки. Суммирую поля да бы получить целое число.
public static function checkMyBonus( $user_id )
{
return UserMainPersonalBonus ::find()
-> where( [ 'user_id' => $user_id ] )
-> select(
'
SUM(count_events_week) as count_events_week,
SUM(count_time_for_conf_room) as count_time_for_conf_room,
SUM(count_time_for_massage) as count_time_for_massage,
'
)
-> groupBy( 'user_id' )
-> all();
}
Но теперь стала задача, нужно перезаписывать значения полей, с одним полем то еще ладно. Нашел - отдал - записал.
Но тут два поля, допустим, поля где значения 2 и 4. В запрос пришло значение 3 к примеру. Нужно записать так что бы в полях отнялось 3. Тобишь осталось 0 и 1
Стандартная разметка обновления такова.
public static function updateMyBonus( $user_id, $count_events_week = NULL, $count_time_for_massage = NULL, $count_time_for_conf_room = NULL )
{
$model = UserMainPersonalBonus::findOne( $user_id );
$old_count_events_week = $model -> count_events_week - $count_events_week;
$old_count_time_for_massage = $model -> count_time_for_massage - $count_time_for_massage;
$old_count_time_for_conf_room = $model -> count_time_for_conf_room - $count_time_for_conf_room;
if( !empty( $count_events_week ) )
{
$model -> count_events_week = $old_count_events_week;
}
if( !empty( $count_time_for_massage ) )
{
$model -> count_time_for_massage = $old_count_time_for_massage;
}
if( !empty( $count_time_for_conf_room ) )
{
$model -> count_time_for_conf_room = $old_count_time_for_conf_room;
}
if( !$model -> save() )
{
dd( $model -> errors );
}
}
Насколько я понимаю сюда нужно отдать id записи, после чего отдать в запрос с id_user. И по нему искать. Или как еще подумал, что может искать по самому меньшему значению таблицы, если значение 0, то переходить к другой записи. Если значений нет, так юзеру об этом и сказать...
Буду рад любому совету... у меня голова не варит:((