آراز غلامی

یادداشت‌هایی از تاملات، خاطرات و رویدادها

Gallery iPhone Pen RSS1408 Subscriber
ᛁ ᚨᚱᚨᛉ ᚹᚱᚩᛏᛖ ᛏᚻᛁᛋ ᚱᚢᚾᛁᚳ ᛒᛚᚩᚷ (?)
SINCE 2006

۲۰ ترفند Eloquent لاراول برای کدنویسی سریعتر

الکوئنت لاراول سیستم ORM (مدیریت روابط مدل‌ها) از بهترینو ساده‌ترین و البته پدرسوخته‌ترین گزینه‌های موجود برای برقراری و مدیریت روابط بین کلاس‌ها (مدل‌ها) هست و از دلایل اصلی استفاده از فریم‌ورک‌ها. اما در عین سادگی تعداد زیادی از قابلیت‌هاش شبه‌مخفی هستند و افراد کمی از اون‌ها استفاده می‌کنند. در این نوشته تلاش می‌کنم تعدادی از بدردبخورترین ترفندهای الکوئنت رو لیست کنم که با استفاده از اون‌ها می‌تونید با کد [خیلی] کمتر نتیجه برابر و سریعتر بگیرید.

۱. افزایش و کاهش مقدار متغیر

برای افزایش مقدار یک فیلد بجای این روش:

$article = Article::find($article_id);
$article->read_count++; $article->save();

می‌تونید از این روش استفاده کنید:

$article = Article::find($article_id);
$article->increment('read_count');

حتی می‌تونید مقدارش رو هم مشخص کنید:
Article::find($article_id)->increment('read_count', 10);

۲. متدهای XorY (این، اگر نشد اون)

برای سناریوهایی که دارای دو احتمال هستند:

$user = User::find($id);
if (!$user) { abort (404); }

روشی بهتر:
$user = User::findOrFail($id);

۳. اعمال شرط و مرتب‌سازی مستفیما درون ریلیشن‌ها

مثال:
public function approvedUsers() {
return $this->hasMany('App\User')->where('approved', 1)->orderBy('email');
}

۴. دستکاری ثابت‌ها و مشخصه‌های مدل‌ها


class User extends Model {
protected $table = 'users';
protected $fillable = ['email', 'password']; // which fields can be filled with User::create()
protected $dates = ['created_at', 'deleted_at']; // which fields will be Carbon-ized
protected $appends = ['field1', 'field2']; // additional values returned in JSON
protected $primaryKey = 'uuid'; // it doesn't have to be "id"
public $incrementing = false; // and it doesn't even have to be auto-incrementing!
protected $perPage = 25; // Yes, you can override pagination count PER MODEL (default 15)
const CREATED_AT = 'created_at';
const UPDATED_AT = 'updated_at'; // Yes, even those names can be overridden
public $timestamps = false; // or even not used at all
}

لیست کامل متغیرها

۵. انتخاب چند سطر از جدول با متد واحد

$users = User::find([1,2,3]);

۶. مجیک متد WhereX

پرس و جوی سریعتر با

$users = User::whereApproved(true)->get();

بجای

$users = User::where('approved', 1)->get();

در همین پست تکمیل می‌شود.

منبع

آراز غلامی
شنبه، ۲۲ ژوئن ۲۰۱۹


Nazar Amulet