Как я могу увеличить выбор 6 месяцев из поля базы данных to_date? - PullRequest
0 голосов
/ 20 сентября 2019

Я делаю свой проект, и хочу увеличить дату от выборки to_date, поданной с 6 месяцами, если последний to_date пропал, затем добавить еще 6 месяцев и так далее, что я могу сделать для этого?

$abc=(Session::get('email'));
$email= $request->input('email');

if (Maintenance::where('email', '=', $email)) {
    $users=Carbon::create(2019,0,30)->addMonths(6)->toDatestring();

    if (Maintenance::where('maintenance_status', '=', 'PAID')->orderBy('todate','DESC')) {
        $check = Maintenance::select('to_date')->where('maintenance_status', '=', 'PAID')->orderBy('to_date','DESC')->get();
        // $users= Carbon($check[0])->addmoths(6);
        $users = Carbon::addMonths(6)->toDatestring();

я ожидаю вывод 30-06-2019, 30-12-2019 и т. д., но фактический вывод увеличивается только один раз с использованием Carbon, и я хочу увеличить выборку с даты базы данных

1 Ответ

0 голосов
/ 20 сентября 2019

Похоже, что вы перезаписываете свою переменную, а не добавляете к ней.

$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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...