Похоже, что вы перезаписываете свою переменную, а не добавляете к ней.
$users = Carbon\Carbon::create(2019,0,30)->addMonths(6)->toDatestring();
возвращает 2019-06-30.
$users = Carbon\Carbon::addMonths(6)->toDatestring();
перезаписывает ее, но она фактически прерывается«Ошибка PHP: вызов функции-члена addMonths () on string».
Не сохраняйте строку как переменную.Вместо этого сохраните его как экземпляр Carbon, чтобы вы могли вызывать на нем функции.Затем, когда вам понадобится использовать его, позвоните toDatestring()
.
Это будет выглядеть примерно так:
$date_to_increment = Carbon\Carbon::create(2019,0,30)->addMonths(6);
echo($date_to_increment->toDatestring()); // 2019-06-30
if ($your_condition) {
$date_to_increment->addMonths(6);
echo($date_to_increment->toDatestring()); // 2019-12-30
}
Что касается применения его в вашем случае, есть несколько проблем.Ваше первое условие недействительно.Я верю, что он всегда вернет true, поскольку вы никогда не выполняете запросЯ также предполагаю, что, поскольку вы соответствуете электронному письму, результат будет только один.Поэтому давайте воспользуемся методом построителя запросов first()
для сохранения шага, поскольку он будет возвращать одну запись вместо массива.
$maintenance = Maintenance::where('email', '=', $email)->first();
if ($maintenance) {
// do stuff
}
Тогда у вас есть еще несколько условий, у которых есть похожие проблемы, но что более важноони повторно запрашивают, поэтому вы теряете ограничения в своей коллекции каждый раз.
Вместо этого:
$maintenance = Maintenance::where('email', '=', $email)->first();
if ($maintenance) {
if ($maintenance->maintenance_status === 'PAID') {
// do something
}
}
Наконец, чтобы использовать значение из базы данных:
if ($maintenance->maintenance_status === 'PAID') {
$date = Carbon\Carbon::parse($maintenance->to_date)->addMonths(6);
$maintenance>to_date = $date->toDatestring();
$maintenance->save();
}