دریافت id آخرین رکورد درج شده در جدول در لاراول 5.8 ، در این پست از تجاری اپ ما به شما نحوه گرفتن id آخرین رکورد اضافه شده در جدول در لاراول 5.8 را آموزش خواهیم داد.در پروژه هایی که با فریمورک لاراول انجام می دهیم جاهای زیادی وجود دارد که ما نیاز داریم id آخرین رکورد درج شده در جدول را بگیریم ، ما در این پست با 4 روش مختلف به شما نحوه گرفتن id آخرین رکورد اضافه شده را در لاراول 5.8 آموزش می دهیم.برای یادگیری این مبحث کافیست مراحل زیر را دنبال کنید.با ما همراه باشید:
همچنین بخوانید: اعتبارسنجی فرم ثبت نام با ajax در لاراول 5.8
برای هر پروژه لاراول ما نیاز داریم که لاراول را نصب کنیم. به همین دلیل ما یک مقاله در رابطه با چگونگی نصب و پیکربندی اولیه لاراول آماده کرده ایم که می توانید از اینجا ان را مشاهده نمایید : آموزش نصب لاراول به همراه تنظیمات اولیه
در این مرحله ما باید یک مدل ایجاد کنیم زیرا دو تا از روش های ما برای گرفتن Id آخرین رکورد اضافه شده در جدول در لاراول نیاز به مدل دارند.بنابراین برای ایجاد یک مدل با نام LastId دستور زیر را اجرا کنید:
php artisan make:model LastId -m
بعد از ایجاد فایل مدل ، ما باید مانند زیر نام ستون هایی از جدول که می توانیم بر روی آنها عملیات مختلف را انجام دهیم را تعریف کنیم.
app/LastId.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class LastId extends Model
{
protected $fillable = [
'first_name', 'last_name'
];
}
دستوری که در بالا برای ایجاد مدل اجرا کردیم بخاطر پارامتر (-m) که جلوی آن قرار دادیم همچنین یک فایل migration در پوشه database/migrations برای ما ایجاد می کند.در این فایل ما باید باید مانند زیر نام ستون های جدول به همراه نوع داده آنها را تعریف کنیم :
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateLastIdsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('last_ids', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('first_name');
$table->string('last_name');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('last_ids');
}
}
بعد از تعریف کردن جدول با اجرای دستور زیر migrate را انجام می دهیم تا جدول مورد نظر (last_ids) در پایگاه داده ما ایجاد شود:
php artisan migrate
در لاراول برای مدیریت درخواست http ما باید کنترلر ایجاد کنیم.دستور زیر را برای ایجاد یک کنترلر به نام LastIdController در ترمینال خود اجرا کنید:
php artisan make:controller LastIdController
در این فایل کنترلر دو متد ایجاد می کنیم.در ادامه توضیحات مربوط به این دو متد را آورده ایم:
index() – این متد ، متد اصلی این کنترلر می باشد که فایل sample_form.blade.php را در مروگر بارگزاری می کند.
getid() – این متد درخواست ajax برای گرفتن id آخرین رکورد درج شده را دریافت می کند.
روش اول – insertGetId() – در این روش از کلاس دیتابیس لاراول (فاساد DB) برای گرفتن id آخرین رکورد درج شده استفاده می کند.برای این کار ما باید خط use DB; را به کنترلر اضافه کنیم.در زیر می توانید یک کد به عنوان نمونه از این روش را مشاهد کنید (چگونگی افزودن داده ها به پایگاه داده و بازگرداندن id آخرین رکورد درج شده در لاراول):
$data = array(
'first_name' => $request->first_name,
'last_name' => $request->last_name
);
$last_id = DB::table('last_ids')
->insertGetId($data);
return response()->json(['id' => $result->$last_id]);
روش دوم – lastInsertId() – این دومین روش برای گرفتن id آخرین رکورد درج شده در لاراول می باشد.برای استفاده از این روش ابتدا ما باید با استفاده از کلاس پایگاه داداه لاراول (فاساد DB) داده ها را به جدول اضافه کنیم و سپس برای بازگرداندن id آخرین رکورد اضافه شده از متد getPDO() کلاس دیتابیس لاراول به همراه متد lastInsertID() استفاده کنیم:
$data = array(
'first_name' => $request->first_name,
'last_name' => $request->last_name
);
DB::table('last_ids')->insert($data);
$last_id = DB::getPDO()->lastInsertId();
return response()->json(['id' => $last_id]);
روش سوم – create() – این سومین روش برای گرفتن id آخرین رکورد درج شده در لاراول می باشد.این متد از کلاس مدل Eloquent لاراول می باشد که داده ها را در آرایه ای از شی برمی گرداند.بنابراین ما می توانیم با استفاده از متد create() نتبیجه را در آرایه ای از شی دریافت کنیم و از شی می توانیم id آخرین رکورد درج شده را دریافت کنیم.برای استفاده از از این متد ما نیاز داریم خط کد use App\LastId; را به کنترلر خود اضافه کنیم:
$data = array(
'first_name' => $request->first_name,
'last_name' => $request->last_name
);
$result = LastId::create($data);
return response()->json(['id' => $result->id]);
روش چهام – save() – این چهارمین روش برای گرفتن id آخرین رکورد درج شده در لاراول می باشد.متد save() نیز از کلاس مدل Eloquent لاراول می باشد.برای استفاده از این متد ما باید یک شی از مدل ایجاد کنیم و داده ها را از طریق این شی اضافه کنیم و در اخر از متد save() استفاده کنیم:
$result = new LastId;
$result->first_name = $request->first_name;
$result->last_name = $request->last_name;
$result->save();
return response()->json(['id' => $result->id]);
با استفاده از 4 روش فوق می توانیم id آخرین رکورد درج شده در لاراول را دریافت کنیم. پس از گرفتن id آخرین رکورد درج شده ، در فرمت json به درخواست Ajax ارسال می کنیم. کد اصلی و نهایی کنترلر ما بصورت زیر می باشد:
app/Http/Controllers/LastIdController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\LastId;
class LastIdController extends Controller
{
function index()
{
return view('sample_form');
}
function getid(Request $request)
{
if($request->ajax())
{
$data = array(
'first_name' => $request->first_name,
'last_name' => $request->last_name
);
//Method 1
/*$last_id = DB::table('last_ids')
->insertGetId($data);*/
//Method 2
/*DB::table('last_ids')->insert($data);
$last_id = DB::getPDO()->lastInsertId();*/
//Method 3
/*$result = LastId::create($data);*/
//Method 4
$result = new LastId;
$result->first_name = $request->first_name;
$result->last_name = $request->last_name;
$result->save();
return response()->json(['id' => $result->id]);
}
}
}
برای ایجاد فایل View به پوشه ی resources/views بروید و یه فایل Blade با نام sample_form.blade.php ایجاد کنید و کدهای زیر را در آن وارد کنید
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>دریافت ID آخرین رکورد درج شده در جدول در لاراول 5.8</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body dir="rtl">
<div class="container">
<br />
<h3 align="center">دریافت ID آخرین رکورد درج شده در جدول در لاراول 5.8</h3>
<br />
<div class="row">
<div class="col-md-3">
</div>
<div class="col-md-6">
<form method="post" id="sample_form">
@CSRF
<div class="form-group">
<label>نام</label>
<input type="text" name="first_name" class="form-control" />
</div>
<div class="form-group">
<label>نام خانوادگی</label>
<input type="text" name="last_name" class="form-control" />
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-info" value="ارسال" />
</div>
</form>
<div id="last_inserted_id"></div>
</div>
<div class="col-md-3">
</div>
</div>
</div>
</body>
</html>
<script>
$(document).ready(function(){
$('#sample_form').on('submit', function(event){
event.preventDefault();
$.ajax({
url:"{{ route('last-id/getid') }}",
method:"POST",
data:$(this).serialize(),
dataType:"json",
success:function(data){
$('#sample_form')[0].reset();
$('#last_inserted_id').html(' ID آخرین رکورد درج شده - ' + data.id);
}
})
});
});
</script>
در پروژه های لاراول ما باید برای متدهای کنترلر برنامه Route ایجاد کنیم.برای این کار فایل routes/web.php را باز کنید و کدهای زیر را در آن بنویسید:
<?php
Route::get('last-id', 'LastIdController@index');
Route::post('last-id/getid', 'LastIdController@getid')->name('last-id/getid');
برای اجرای برنامه خود کافیست کد زیر را در ترمینال اجرا کنید:
php artisan serve
همچنین بخوانید: آموزش آپلود چندین عکس با Dropzone در لاراول 5.8
برای مشاهده برنامه دریافت id آخرین رکورد درج شده آدرس زیر را در مرورگر خود باز کنید:
http://127.0.0.1:8000/last-id