Вызов функции-члена addDays () для строки на Laravel 6 - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть функция магазина. В функции магазина я хочу создать формат даты, используя углерод. Вы можете увидеть этот код здесь:

public function store_cuti(Request $request)
{
    $end = $request->tgl_mulai->addDays(3);

    $users = new Data_cuti;
    $users->user_id                 = $request->user_id ; // users_id
    $users->nama_surat        = $request->nama_surat ; 
    $users->tgl_surat              = $request->tgl_surat ;
    $users->durasi_cuti          = $request->durasi_cuti ; // this input is number integer like 1,2,3
    $users->tgl_mulai             = $request->tgl_mulai ; // this input is Date formate 
    $users->tgl_selesai           = $end; // it will going to date format too
    $users->status                  = $request->status ;

}

Я сделал это, но $end имеет ошибку Call to a member function addDays() on string.

Я добавил это в свои модели:

  protected $dates = ['tgl_mulai'];

, но это не дало эффекта. Что не так?

Ответы [ 4 ]

1 голос
/ 04 ноября 2019

tgl_mulai свойство Модели будет приведено как Дата, но НЕ tgl_mulai свойство $request, которое является строкой, следовательно, вы получаете вышеупомянутую ошибку.

Вам нужно будет привестистрока в экземпляр углерода для вызова функций углерода на нем.

$end = \Carbon\Carbon::parse($request->tgl_mulai)->addDays(3);

Документация

0 голосов
/ 04 ноября 2019

Также вы можете использовать php date для добавления дней.

$end = date('Y-m-d', strtotime($request->tgl_mulai. ' + 3 days'));
0 голосов
/ 04 ноября 2019

Вы можете использовать Carbon для преобразования строки в дату, В вашем случае вы можете попробовать, как показано ниже

 $end = Carbon::parse($request->tgl_mulai)->addDays(3);

Затем вы также можете отформатировать дату, как вы ожидаете

$end->format('Y-m-d'); //returns string

Для получения дополнительной информации вы можете посмотреть на Углерод

0 голосов
/ 04 ноября 2019

$request->tgl_mulai является строкой и пытается сказать, что вы не можете использовать метод addDays () для нее. Этот метод можно использовать только для объекта Carbon. Решение простое, просто создайте экземпляр Carbon из $request->tgl_mulai, а затем добавьте 3 дня.

$end = new Carbon($request->tgl_mulai)->addDays(3);

Затем преобразуйте дату Carbon в строку, подобную этой.

$users->tgl_selesai = $end->toDateString(); // 1975-12-25

Дополнительные форматы можно найти в официальной углеродной документации прямо здесь - https://carbon.nesbot.com/docs/#api-formatting

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...