Есть проблема с вставкой 1399/06/31 в SQL с помощью laravel, на самом деле, если день месяца на другое число меньше, чем 31, проблем нет.

примечание: - Я использую персидский календарь, а не григорианский.

 public function create(Request $request)
 {
     $transferMoney = new TransferMoney();
     $transferMoney->sender_id = Input::get('sender_account_id');
     $transferMoney->receiver_id = Input::get('receiver_account_id');
     $transferMoney->payment_amount = Input::get('payment_amount');
     $transferMoney->rate = Input::get('rate');
     $transferMoney->date = Input::get('pr_date');
     $transferMoney->description = Input::get('transfer_description');

     $transferMoney->save();
 }
1
Zia Yamin 17 Янв 2021 в 13:38

3 ответа

Лучший ответ

Лучшее решение вашей проблемы - это изменить типы вашей даты с date на varchar в базе данных SQL, потому что дата Shamsi является неизвестной датой в SQL, и SQL не может поддерживать этот тип. как ниже:

public function create(Request $request)
{
    $transferMoney = new TransferMoney();
    $transferMoney->sender_id = Input::get('sender_account_id');
    $transferMoney->receiver_id = Input::get('receiver_account_id');
    $transferMoney->payment_amount = Input::get('payment_amount');
    $transferMoney->rate = Input::get('rate');
    $date = explode('/', Input::get('pr_date'));
    if($date[1] <= 9 ) {
       $date[1] = '0'.$date[1];
    } else {
       $date[1] = $date[1];
    }
    if($date[2] <= 9) {
       $date[2] = '0'.$date[2];
    } else {
       $date[2] = $date[2];
    }
    $transferMoney->date = $date[0].'-'.$date[1].'-'.$date[2];
    $transferMoney->description = Input::get('transfer_description');

    $transferMoney->save();
}
2
Sayed Ashraf 17 Янв 2021 в 12:26

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

$transferMoney->date = Carbon::parse(Input::get('pr_date'))->locale('UTC+6');

Нашел пакет для перевода персидского времени, не знаю нужен он вам или нет. https://github.com/morilog/jalali

Вы можете использовать этот или желаемый формат в TransferMoney.php после импорта:

public function getYourDateFieldAttribute($value)
{
    return Jalalian::fromDateTime($value);
}
1
Tamzid Oronno 17 Янв 2021 в 11:25

Тип столбца базы данных Должен быть тип «дата», а не «дата-время», а тип ввода также должен быть типом «дата».

Тогда просто напишите:

$ transferMoney-> date = $ request-> pr_date;

Он должен работать.

-2
Parvez Hossain 17 Янв 2021 в 11:39
65759613