آموزش laravel eloquent قسمت دوم

حمید تیموری 900 بازدید 1397/06/16
آموزش laravel eloquent قسمت دوم

در مطلب قبلی توضیحاتی مختصرداده شد که چگونه یک مدل تعریف کنیم، و چگونه از آن استفاده کنیم.
حالا در این مطلب توضیحاتی درباره نحوه query ها در Eloquent میدهم!

وقتی که شما مدل تعریف میکنید، برای اینکه جدول آن را نیز ایجاد کنید میتوانید از دستور زیر استفاده کنید که همزمان با آن migration آن هم ایجاد شود

php artisan make:model Article -m

با این دستور هم مدل ساخته میشود، هم migration !
توضیحات مربوط به migration ها را به زودی در اختیار شما قرار میدهم.

چگونه query های مورد نیاز خود را در Eloquent اجرا کنیم ؟
برای اینکه همه رکورد های یک مدل را بگیریم از متد all استفاده میکنیم. به صورت زیر:

<?php

use App\Flight;

$flights = App\Article::all();

foreach ($articles as $article) {
    echo $article->name;
}

این متد بدون اجرای هر شرطی تمام داده های جدول را برمیگرداند، حالا زمانی که نیاز باشد شرطی در Query اعمال شود به صورت زیر عمل میکنیم

$articles = App\Article::where('active', 1)
               ->orderBy('name', 'desc')
               ->take(10)
               ->get();

همانطور که میبینید این query به این صورت است که، تمام مقالاتی که فیلد active مقداری برابر 1 دارد را میگیرد، و آنها را بر اساس name به صورت desc یا همان نزولی مرتب میکند، و در پایان 10 رکورد را برمیگرداند.
متد get زمانی که اجرا میشود نتیجه query را به collection تبدیل میکند، که ساختاری شبیه به json دارد.
لاراول برای کلاس collection توابعی دارد که برای مدیریت آنها به شما کمک میکند.
همچنین شما میتوانید روی collection ها مثل آرایه از foreach استفاده کنید.

foreach ($articles as $article) {
    echo $article->name;
}

حالا فرض کنید تعداد رکوردهای جدول شما به چندهزار میرسد، در این صورت میتوانید از chunk استفاده کنید:

Article::chunk(200, function ($articles) {
    foreach ($flights as $flight) {
        //
    }
});

درصورت استفاده از chunk ، در مثال بالا، دیتا ها به صورت 200 تایی جدا میشوند، و عملیات مورد نظر روی آنها اعمال میشود، این به شما کمک میکند که بتوانید روی دیتای زیاد به راحتی عملیات مورد نظر خودتان را انجام دهید، بدون اینکه برنامه شما اصطلاحا هنگ کند!

طریقه گرفتن یک رکورد در Eloquent :
زمانی که شما میخواهید یک رکورد را بگیرید به صورت زیر میتوانید این کار ار انجام دهید:

// Retrieve a model by its primary key...
$article = App\Article::find(1);

// Retrieve the first model matching the query constraints...
$article = App\Article::where('active', 1)->first();

با استفاده از find شما میتوانید یک ID خاص را بگیرید و با استفاده از first اولین رکوردی که با شرط query مطابقت دارد را میتوان گرفت.
حالا اگر ID که به متد find داده شده است در database موجود نباشد، ممکن است خطا ایجاد کند.
اگر میخواهید که به صورت اتوماتیک status کد 404 برگرداند به صورت زیر استفاده کنید:

App\Article::findOrFail($id);

or 

App\Article::where('active',1)->firstOrFail();

در مطلب بعدی بقیه موارد Eloquent را به شما توضیح میدهم.
اگر سوالی داشتید میتوانید از قسمت نظرات استفاده کنید و سوال خودتان را بپرسید.


دیگر مقالات
حمید تیموری 1117 بازدید 1397/11/13
حمید تیموری 993 بازدید 1398/09/16
امید کیانی 567 بازدید 1398/07/12
امید کیانی 446 بازدید 1398/05/14
حمید تیموری 328 بازدید 1399/03/16


نظرات (0)
هنوز نظری ثبت نشده است
برای ثبت نظر ابتدا وارد سایت شوید