۲۰ ترفند 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();
در همین پست تکمیل میشود.
شنبه، ۲۲ ژوئن ۲۰۱۹