如何使用laravel获得唯一的交易号?



我正在使用Laravel ID生成器,我已经制作了事务ID并插入数据库,但不幸的是,我正在获得重复的事务ID错误。

如何获得唯一的ID?

控制器

public function nonMemberBookingUserSummaryStore(Request $request,$random_code){
$room = Room::where('random_code',$random_code)->first();
$booking  = Booking::with('bookingDetails')->where('room_id',$room->id)
->orderBy('id','DESC')->first();

$transaction_id = IdGenerator::generate(['table' =>
'transactions',
'field'=>
'transaction_id',
'length' => 15,
'prefix' =>"NMB-BOO-"]);
$transaction_info = $request->session()->get('name') .' booked '. $room->name .' 
RM '. $booking->price;
$shopTransaction                                   = new Transaction();
$shopTransaction->booking_id                       = $booking->id;
$shopTransaction->non_member_full_name             = $request->session()->get('name');
$shopTransaction->non_member_email                 = $request->session()->get('email');
$shopTransaction->non_member_mobile_number         = $request->session()->get('mobile_number');
$shopTransaction->non_member_company_name          = $request->session()->get('company_name');
$shopTransaction->transaction_type                 = 3;
$shopTransaction->amount_credit                    = $booking->price;
$shopTransaction->transaction_info                 = $transaction_info;
$shopTransaction->transaction_date_time            = date('Y-m-d h:i');
$shopTransaction->transaction_id   =  $transaction_id.'-'. date('Y H:i:s');
$shopTransaction->save();
return redirect()->route('non-member-booking-success',$random_code);
}

您可以像这样实现自己的id生成器....更改生成ID

所需的模型在你的应用程序目录中添加新的文件夹,命名为Helpers…

然后创建新文件InvoiceNumberHelper.php

复制粘贴代码....在

我认为这很有帮助

<?php
namespace AppHelpers;
use AppModelsUserTransactionUserTransaction;
use DateTime;
class InvoiceNumberHelper
{

public static function GenerateInvoiceNumber():string
{
try{
$current_date_time = new DateTime();
$date_sequence = $current_date_time->format("dmy");
//section generate the sequence of running number of trip sheet
$lastTransactionId = UserTransaction::orderBy('tr_id', 'desc')->first();
if (!$lastTransactionId)
// We get here if there is no TripSheet at all
// If there is no Trip sheet number set it to 0, which will be 1 at the end.
$number = 0;
else
$number = substr($lastTransactionId->tr_id, 8);

return "IN".$date_sequence. sprintf('%03d', intval($number) + 1);
}
catch (Exception $e)
{
dd($e);
}
}

}

你现在可以调用这个静态方法,每次

返回一个唯一的发票编号字符串在控制器上使用

$invoice_no=InvoiceNumberHelper::GenerateInvoiceNumber();

你可以试试这个函数:

@php
function unique_id($digits)
{
return substr(base_convert(sha1(uniqid(mt_rand())), 16, 36), 0, $digits);
}
$transaction_id = unique_id(12); // 12 digits
@endphp

最新更新