بازیابی دادهها با استفاده از Eloquent در لاراول، در این مقاله آموزش کار با ابزار Eloquent و مدیریت اطلاعات دریافتی را یاد خواهیم گرفت.
Eloquent چیست؟
لاراول شامل Eloquent است، یک نقشهبردار شی رابطهای (ORM) که تعامل با پایگاه داده را لذن بخش میکند. هنگام استفاده از Eloquent، هر جدول پایگاه داده یک “مدل” مربوطه دارد که برای تعامل با آن جدول استفاده می شود.
علاوه بر بازیابی رکوردها از جدول پایگاه داده، مدل های Eloquent به شما اجازه می دهند تا رکوردها را از جدول دریافت، به روز رسانی و حذف کنید.
نکته: قبل از شروع کار با Eloquent ها باید دیتابیس خود را پیکربندی و جدولی حاوی اطلاعات داشته باشید، اگر هنوز این موارد رو انجام ندادید یا نمی دونید به چه شکل باید انجام شوند در بخش مقاله های آموزشی لاراول، مطالب مرتبط را مطالعه بفرمایید.
آموزش استفاده از Eloquent در لاراول
من جدولی با داده های فیک و ساختار تصویر زیر دارم:
ما برای کار با Eloquent از Model استفاده می کنیم. بنابراین نیاز هست که یک Model برای کنترلر ایجاد کنیم.
کنترلر من در این مثال “PostController” نام داره و اسم Model هم “Post” هست.
فایل کنترلر رو باز می کنم و در متد “index” به شکل زیر از Eloquent و Model برای دریافت داده های جدول دیتابیس استفاده می کنم.
مثال 1: دریافت تمام داده های جدول:
namespace App\Http\Controllers;
use App\Models\Post;
use Illuminate\Http\Request;
public function index()
{
$posts = Post::get();
dd($posts);
return view('blog.index');
}
مثال 2: در این مثال می خوام 10 رکورد اول به صورت صعودی مرتب و دریافت شه:
public function index()
{
$posts = Post::orderBy('id', 'desc')->take(10)->get();
dd($posts);
return view('blog.index');
}
مثال 3: دریافت مقاله ها یا پست هایی که زمان مطالعه آنها در ستون جدول مربوطه 2 دقیقه درج شده:
public function index()
{
$posts = Post::where('min_to_read', 2)->get();
dd($posts);
return view('blog.index');
}
مثال 4: دریافت مقاله ها یا پست هایی که زمان مطالعه آنها 2 دقیقه نباشد:
public function index()
{
$posts = Post::where('min_to_read', '!=', 2)->get();
dd($posts);
return view('blog.index');
}
مثال 5: برخی مواقع تعداد رکوردهای جدول زیاد هست و دریافت همه آنها به صورت یکباره فشار زیادی روی سرور وارد می کند و در سکت کاربر نیز لودینگ انتظار بیشتری خواهیم داشت.
در لاراول برای این حالت متدی به نام “chunk” تعریف شده که به واسطه اون می تونیم رکوردها رو به صورت قطعه قطعه دریافت کنیم.
این متد دو پارامتر میگیره، اولین پارامتر تعداد رکوردهایی هست که بر اساس آن تقسیم انجام میشه و پارامتر دوم تابع برگشتی که پردازش نمایش یا بازگشت داده ها رو بر عهده داره.
public function index()
{
Post::chunk(25, function ($posts) {
foreach($posts as $post) {
echo $post->title . '
';
}
});
return view('blog.index');
}
مثال 6: شمارش تعداد رکوردها
public function index()
{
$posts = Post::get()->count();
return view('blog.index');
}
مثال 7:
استفاده از متدهای sum, avg
// SUM METHOD
public function index()
{
$posts = Post::sum('min_to_read');
dd($posts)
return view('blog.index');
}
// AVG METHOD
public function index()
{
$posts = Post::avg('min_to_read');
dd($posts)
return view('blog.index');
}
مثال 8: نمایش رکورد بر اساس شناسه یا id که از مرورگر ارسال میشه، برای این کار در متد “show” کنترلر دستورات زیر رو می نویسیم:
// URL: http://127.0.0.1:8000/blog/7
public function show($id)
{
$post = Post::find($id);
dd($post);
//return $id;
}
// or
$post = Post::findOrFail($id);
در متد “findOrFail” در صورتی که رکورد پیدا نشه کاربر به صفحه 404 هدایت میشه اما در متد “find” پیام “null” نمایش داده می شود.
حالا می خوام وقتی رکورد پیدا شد محتواش رو برای یک فایل view ارسال کنم و در اونجا نمایشش بدم.
// URL: http://127.0.0.1:8000/blog/7
// CONTROLLER
public function show($id)
{
return view('blog.show', [
'post'=> Post::findOrFail($id)
]);
}
// VIEW
{{ $post }}
جمع بندی
در این مقاله سعی کردم آموزش استفاده از Eloquent رو به همراه مثال توضیح بدم. امیدوارم این مطلب براتون مفید واقع شده باشه.
لطفا اگر نظر و پیشنهادی در خصوص مطالب و پیشبرد آنها دارید خوشحال میشم در قسمت دیدگاه ها مطرح بفرمایید.