Anophel-آنوفل 40 تا از مهم ترین الکونت های لاراول که باید بدانید

40 تا از مهم ترین الکونت های لاراول که باید بدانید

انتشار:
1

چقدر Eloquent ها را در لاراول می شناسید؟لاراول Eloquent ORM ابزار قدرتمندی است که به توسعه دهندگان اجازه می دهد با استفاده از یک سینتکس رسا و زیبا با پایگاه های داده تعامل داشته باشند. در حالی که بسیاری از توسعه دهندگان با متد های رایج مانند ()find()، Where()، first()، get و ()save آشنا هستند، چندین متد کمتر شناخته شده وجود دارد که می تواند گردش کار شما را به میزان قابل توجهی افزایش دهد.

در این مقاله، برخی از این متد‌های ORM نادر اما بسیار مفید Eloquent را بررسی می‌کنیم. بیایید از حالت عادی شروع کنیم و سپس به سمت بهترین ها برویم. شما متد های بسیار زیبایی را مشاهده خواهید کرد که واقعا سرعت و کارایی برنامه شما را افزایش می دهند. بیا بریم. از ویژگی های لاراول 11 با خبر هستی؟ اگه نیستی این مقاله را بررسی کنید.

1. متد ()tap

چرا: اعمال تغییرات در یک مدل و برگرداندن خود مدل برای زنجیره متد.
زمانی که: زمانی که می خواهید یک شی را تغییر دهید از آن استفاده کنید و بلافاصله از آن در عملیات دیگری استفاده کنید.

User::find(1)->tap(function ($user) {
    $user->name = 'Updated Name';
})->save();

2. متد ()firstOrFail

چرا: برای اطمینان از دریافت یک نتیجه معتبر یا رسیدگی به کیسی که هیچ نتیجه ای پیدا نشده است.
زمانی که: زمانی که نیاز به واکشی یک رکورد خاص دارید و می خواهید در صورت عدم وجود آن خطایی ایجاد کنید، از آن استفاده کنید.

$user = User::where('email', 'example@example.com')->firstOrFail();
// Process user details

3. متد ()updateOrCreate

چرا: برای جلوگیری از ورودی های تکراری با به روز رسانی یک رکورد موجود یا ایجاد یک رکورد جدید.
زمانی که: زمانی از آن استفاده کنید که می‌خواهید مطمئن شوید رکوردی وجود ندارد یا وجود ندارد یا به‌روزرسانی می‌شود.

User::updateOrCreate(
    ['email' => 'example@example.com'],
    ['name' => 'John Doe']
);

4.متد `()increment() / `decrement

چرا: برای به روز رسانی موثر مقدار یک ستون عددی.

زمانی که: از آن برای افزایش یا کاهش یک یا چند ستون عددی استفاده کنید.

User::where('id', 1)->increment('points'); // if points is 7, it will now be 8
User::where('id', 1)->decrement('points', 5); // if 7, it will become 2

5. متد های ()withTrashed() / onlyTrashed() / restore

این گروه از متد ها برای مدیریت ویژگی Soft Deletes در لاراول استفاده می شوند.

چرا: برای مدیریت رکوردهای پاک شده Soft Deletes.
زمانی که: از این متد‌ها برای گنجاندن، فقط شامل کردن یا بازیابی رکوردهای پاک شده Soft Deletes استفاده کنید.

$users = User::withTrashed()->get();
$trashedUsers = User::onlyTrashed()->get();
User::withTrashed()->where('id', 1)->restore();

برای آشنایی با 20 از ترفند ها و نکات مهم در الکونت های لاراول این مقاله را بررسی کنید.

6. متد ()withoutEvents

چرا: برای جلوگیری از ایجاد event listeners.
زمانی که: هنگام انجام اقداماتی که نباید باعث ایجاد رویدادها شوند، از آن استفاده کنید، مانند batch imports.


فرض کنید تعداد زیادی کاربر را از یک سیستم خارجی وارد می‌کنید و نمی‌خواهید رویداد UserCreated را برای هر کاربر وارد شده فعال کنید تا از ارسال ایمیل‌های خوش‌آمدگویی یا ثبت هر اثر جلوگیری کنید.

User::withoutEvents(function () {
    User::create([
      'name' => 'John Doe', 
      'email' => 'john@example.com'
    ]);
    User::create([
      'name' => 'Jane Doe', 
      'email' => 'jane@example.com'
    ]);
});

7. متد `()withoutGlobalScopes`

چرا: برای دور زدن محدودیت های کوئری گلوبال.
زمانی که: از آن برای واکشی همه رکوردها استفاده کنید، بدون توجه به گلوبال اسکوپ مانند is_published.


سناریویی را در نظر بگیرید که در آن برنامه شما دارای یک مدل Post با گلوبال اسکوپ است که فقط شامل پست هایی است که منتشر می شوند. ممکن است یک سرپرست برای مدیریت مؤثر محتوا، نیاز به دیدن همه پست‌ها، از جمله پیش‌نویس‌ها و پست‌های منتشر نشده داشته باشد.

واکشی همه پست‌ها با نادیده گرفتن گلوبال اسکوپ:

$allPosts = Post::withoutGlobalScopes()->get();
foreach ($allPosts as $post) {
    echo $post->title . ($post->is_published ? ' (Published)' : ' (Draft)') . "\n";
}

در این مثال، ()withoutGlobalScopes به ادمین اجازه می‌دهد تا همه پست‌ها را مشاهده کند، و از گلوبال اسکوپ که پست‌های منتشر نشده را فیلتر می‌کند دور می‌زند.


استفاده از ()withoutGlobalScopes به ویژه در کارهای اداری که دسترسی جامع به داده ها مورد نیاز است، یا در هنگام دیباگ و تست زمانی که نیاز دارید اطمینان حاصل کنید که اسکوپ های گلوبال بر جستارهای شما تأثیر نمی گذارد، مفید است.


10.متد ()is() / isNot

چرا: برای مقایسه دو نمونه مدل.
زمانی که: از آن برای بررسی اینکه آیا دو مدل نمونه مشابه هستند استفاده کنید.

$user1 = User::find(1);
$user2 = User::find(2);

if ($user1->is($user2)) {
    // Same user
}

if ($user1->isNot($user2)) {
    // Not the same user
}

11. متد ()loadMissing

مثال: فرض کنید یک مدل کاربری دارید که رابطه ای با پست‌ها دارد. می‌خواهید کاربر را همراه با پست‌هایش بارگیری کنید، اما مطمئن نیستید که آیا رابطه پست‌ها قبلاً بارگذاری شده است یا خیر.


چرا: برای بارگیری مشروط روابطی که قبلاً بارگذاری نشده‌اند، بهینه‌سازی کوئری های پایگاه داده و اجتناب از مشکل کوئری N+1.
زمانی که: زمانی که می خواهید روابط را روی نمونه مدل بارگیری کنید، از ()loadMissing استفاده کنید اما فقط در صورتی که قبلاً بارگذاری نشده باشند.

این به ویژه زمانی مفید است که روابط شرطی دارید که می خواهید به صورت پویا بر اساس شرایط خاص بارگیری کنید یا زمانی که روابط را در یک حلقه بارگیری می کنید که ممکن است برخی از آنها قبلاً بارگذاری شده باشند.

$user = User::find(1);

// Check if the 'posts' relationship is already loaded
if (!$user->relationLoaded('posts')) {
    // Load the 'posts' relationship only if it's not already loaded
    $user->loadMissing('posts');
}

// Now you can access the 'posts' relationship without worrying about duplicate queries
foreach ($user->posts as $post) {
    echo $post->title . "\n";
}

12. متد ()makeHidden() / makeVisible

چرا: برای کنترل نمایان بودن ویژگی های مدل.
زمانی که: از آن برای پنهان کردن یا نمایش موقت ویژگی ها، به عنوان مثال، در پاسخ های API استفاده کنید.

$user = User::find(1);
$user->makeHidden('email');
$user->makeVisible('email');

13. متد ()touch

چرا: برای به روز رسانی timestamp updated_at.
زمانی که: از آن برای علامت گذاری یک رکورد به عنوان به روز شده بدون تغییر هیچ ویژگی دیگری استفاده کنید.

$user = User::find(1);
$user->touch();

14. متد ()append

چرا: برای افزودن ویژگی های سفارشی به آرایه مدل یا فرم JSON.
وقتی که: زمانی که می‌خواهید ویژگی‌های محاسبه‌شده اضافی را در نمایش مدل اضافه کنید، از آن استفاده کنید.

$user = User::find(1);
$user->append('custom_attribute');

15. متد ()replicate

چرا: برای کپی کردن یک نمونه مدل.
وقتی که: از آن برای ایجاد یک نمونه جدید با همان ویژگی ها، مانند شبیه سازی یک الگو، استفاده کنید.

$user = User::find(1);
$newUser = $user->replicate(); // $newUser is matches to $user
$newUser->save();

16. متد ()chunkById

تصور کنید با جدولی با 20000000 رکورد سروکار دارید و باید روی هر رکورد اقدام کنید. چگونه این کار را بدون ….


چرا: برای پردازش کارآمد مجموعه داده های بزرگ در تکه ها.
وقتی که: از آن برای پردازش مجموعه داده های بزرگ برای مدیریت کارآمد حافظه با عملکرد بهتر در جداول بزرگ استفاده کنید.


فرض کنید یک جدول پایگاه داده با 20000000 رکورد دارید و باید روی هر رکورد یک عمل مشخص انجام دهید.

use App\Models\YourModel;

YourModel::orderBy('id')->chunkById(1000, function ($records) {
    foreach ($records as $record) {
        // Process each record
    }
});

نکته: متدی مشابه با این وجود دارد که ()chunk نام دارد. آنها کارهای مشابهی انجام می دهند، اما تفاوت هایی وجود دارد.


هر دو ()chunk و ()chunkById برای پردازش کارآمد مجموعه داده های بزرگ به صورت دسته ای استفاده می شوند که از فرسودگی حافظه و بهینه سازی عملکرد جلوگیری می کند. هر دوی آنها به شما این امکان را می دهند که روی یک مجموعه داده بزرگ بدون بارگیری کل مجموعه داده به یکباره در حافظه، تکرار کنید. با این حال، آنها در نحوه تعیین دسته های داده متفاوت هستند:


()chunk:

()chunk مجموعه داده را بر اساس تعداد رکوردها در هر قطعه که به عنوان پارامتر اول مشخص شده است به قطعات تقسیم می کند.
این رکوردها را از جدول پایگاه داده به صورت متوالی و بدون در نظر گرفتن ترتیب خاصی بازیابی می کند.
رکوردهای هر ()chunk بر اساس ترتیبی که از پایگاه داده بازیابی شده اند واکشی می شوند، که ممکن است لزوما بر اساس ترتیب کلید اولیه نباشد.
این متد زمانی مفید است که ترتیب پردازش مهم نیست، یا زمانی که شما به سادگی نیاز به پردازش داده ها در قطعات کوچکتر و قابل مدیریت دارید.


()chunkById:

()chunkById مجموعه داده را بر اساس ترتیب کلید اولیه (معمولا id) رکوردها به تکه هایی تقسیم می کند.
این رکوردها را از جدول پایگاه داده به ترتیب بر اساس ترتیب کلیدهای اصلی آنها بازیابی می کند.
هر تکه حاوی رکوردهایی با کلیدهای اصلی در محدوده مشخصی است که اطمینان حاصل می کند که رکوردها به ترتیب کلیدهای اصلی خود پردازش می شوند.
این متد به ویژه زمانی مفید است که ترتیب پردازش مهم است، مانند هنگام انجام انتقال داده ها یا به روز رسانی هایی که نیاز به پردازش متوالی بر اساس ترتیب کلید اولیه دارند.

 

برای آشنایی با کد نویسی تمیز در لاراول این مقاله را بررسی کنید.


17. متد ()existsOr

چرا: برای اجرای یک فراخوان در صورت وجود مدل، یا برگرداندن یک مقدار پیش فرض.
وقتی که: از آن برای رسیدگی به بررسی های موجود با منطق سفارشی استفاده کنید.

$exists = User::where('email', 'example@example.com')->existsOr(function () {
    return 'User does not exist';
});

18. متد ()firstOrCreate

چرا: برای بازیابی یا ایجاد یک رکورد در یک مرحله.
وقتی که: از آن برای جلوگیری از ورودی های تکراری با به روز رسانی یا ایجاد رکورد در صورت نیاز استفاده کنید.

$user = User::firstOrCreate(['email' => 'example@example.com'], ['name' => 'John Doe']);

19.متد ()firstOrNew

چرا: برای بازیابی یا نمونه سازی یک رکورد جدید بدون ذخیره کردن.
زمانی که: از آن برای دریافت یک رکورد موجود یا ایجاد یک نمونه جدید بدون تداوم آن استفاده کنید.

$user = User::firstOrNew(['email' => 'example@example.com'], ['name' => 'John Doe']);

20. متد ()sole

چرا: برای اطمینان از بازیابی تنها یک رکورد یا ایجاد یک استثنا.
زمانی که: زمانی از آن استفاده کنید که انتظار یک نتیجه منحصر به فرد را دارید و می خواهید موارد تکراری را به عنوان خطا مدیریت کنید.

$user = User::where('email', 'example@example.com')->sole();

21. متد ()findMany

چرا: برای بازیابی چندین رکورد توسط کلیدهای اصلی آنها.
وقتی که: از آن برای واکشی چندین رکورد در یک کوئری توسط آرایه ای از شناسه ها استفاده کنید.

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

22. متد ()update

چرا: برای به روز رسانی چندین رکورد در یک زمان.
وقتی که: از آن برای انجام به روز رسانی انبوه به طور موثر استفاده کنید.

User::where('status', 'active')->update(['status' => 'inactive']);

23. متد ()forceDelete

چرا: برای حذف دائمی یک مدل Soft Deletes.
زمانی که: از آن برای حذف کامل یک رکورد و دور زدن حذف های Soft Deletes استفاده کنید.

$user = User::withTrashed()->find(1);
$user->forceDelete();

برای آشنایی با هنر اعتبارسنجی در لاراول این مقاله را بررسی کنید.

24. متد ()getDirty

چرا: برای دریافت ویژگی هایی که تغییر کرده اند.
وقتی که: از آن برای بررسی اینکه کدام ویژگی ها قبل از ذخیره اصلاح شده اند استفاده کنید.

$user = User::find(1);
$user->name = 'New Name';
$dirty = $user->getDirty();

25. متد ()getOriginal

چرا: برای به دست آوردن مقادیر اصلی ویژگی های مدل.
وقتی که: از آن برای مقایسه مقادیر فعلی و اصلی قبل از تغییرات استفاده کنید.

$user = User::find(1);
$original = $user->getOriginal('name');

26. متد ()setRelation

چرا: برای تنظیم یک رابطه خاص روی مدل.
وقتی که: از آن برای تعریف دستی روابط برای یک نمونه مدل استفاده کنید.

$user = User::find(1);
$user->setRelation('posts', $posts);

27. متد ()without

چرا: برای حذف برخی از روابط از کوئری.
زمانی که: از آن برای بهینه سازی کوئریها با حذف روابط غیر ضروری استفاده کنید.

$user = User::with('posts', 'comments')->without('comments')->find(1);

28. متد ()preventLazyLoading

چرا: برای جلوگیری از lazy loading روابط.
وقتی که: از آن برای گرفتن lazy loading ناخواسته در توسعه استفاده کنید.

Model::preventLazyLoading(!app()->isProduction());

29. متد ()withoutTimestamps

چرا: برای غیرفعال کردن به‌روزرسانی create_at و updated_at.
وقتی: از آن برای اقداماتی استفاده کنید که نباید به‌روزرسانی‌های Timestamps را راه‌اندازی کنند، مانند import ها.

User::withoutTimestamps(function () {
    User::create(['name' => 'John Doe']);
});

30. متد ()withCasts

لاراول به شما امکان می دهد قوانین casting را به صورت پویا برای ویژگی های مدل اعمال کنید. این زمانی مفید است که شما نیاز به تغییر نحوه ارسال ویژگی‌ها، بسته به شرایط خاص یا سناریوهای زمان اجرا دارید. به عنوان مثال، می توانید یک ویژگی را بر اساس ورودی کاربر یا مقادیر پایگاه داده به نوع دیگری ارسال کنید و از سازگاری و انعطاف داده در برنامه خود اطمینان حاصل کنید.


چرا: برای اعمال قوانین casting به صورت پویا.
زمانی که: از آن برای تغییر نحوه ارسال مشخصه ها در پرواز استفاده کنید.

$user = User::withCasts(['is_admin' => 'boolean'])->find(1);

31. متد ()upsert

چرا: برای درج یا به روز رسانی رکوردها بر اساس معیارهای منطبق.
وقتی که: از آن برای جلوگیری از ورودی های تکراری با انجام درج یا به روز رسانی انبوه استفاده کنید.

فرض کنید یک جدول کاربران با ستون ایمیل به عنوان شناسه منحصر به فرد دارید. اگر ایمیل او قبلاً در جدول وجود ندارد، می‌خواهید یک کاربر جدید وارد کنید، یا اگر ایمیل از قبل وجود داشته باشد، نام او را به‌روزرسانی کنید.

use App\Models\User;

User::upsert([
    ['email' => 'john@example.com', 'name' => 'John Doe'],
    ['email' => 'jane@example.com', 'name' => 'Jane Doe']
], ['email'], ['name']);

32. متد scope

چرا: برای تعریف محدوده کوئری قابل استفاده مجدد.
وقتی که: از آن برای اعمال محدودیت های رایج کوئری در چندین کوئری استفاده کنید.

// In User model
public function scopeActive($query)
{
    return $query->where('status', 'active');
}

// Usage
$activeUsers = User::active()->get();

33. متد ()macro

چرا: برای تعریف متدهای سفارشی در سازنده کوئری Eloquent.
زمانی که: از آن برای گسترش کوئری ساز با متد های خود استفاده کنید.

فرض کنید اغلب نیاز دارید که کاربران را بر اساس نقش آنها در برنامه خود فیلتر کنید. برای ساده کردن این کار می توانید یک ماکرو سفارشی به نام ()role در سازنده query تعریف کنید.

use Illuminate\Database\Eloquent\Builder;

// Define the 'role' macro
Builder::macro('role', function ($role) {
    return $this->where('role', $role);
});

// Usage
$admins = User::role('admin')->get();
$customers = User::role('customer')->get();

34. متد ()filter

چرا: برای اعمال فیلترهای کوئری پویا.
زمانی که: از آن برای اعمال چندین فیلتر بر اساس پارامترهای درخواست استفاده کنید.

// In User model
public function scopeFilter($query, $filters)
{
    return $filters->apply($query);
}

// Usage
$filters = new UserFilters(['status' => 'active']);
$filteredUsers = User::filter($filters)->get();

در این مثال، یک محدوده ()filter در مدل User تعریف می کنیم که مجموعه ای از فیلترها را می پذیرد. این فیلترها را می توان با استفاده از متد ()application یک شی UserFilters روی کوئری اعمال کرد. این به شما این امکان را می دهد که کاربران را بر اساس معیارهای مختلف مشخص شده در متغیر filters$ به ​​صورت پویا فیلتر کنید.


با استفاده از ()filter، می توانید کوئریهای پایگاه داده خود را با نیازهای متغیر و ورودی کاربر سازگارتر کنید، و در نتیجه بازیابی داده ها انعطاف پذیرتر و پویاتر در برنامه های لاراول شما می شود.

 

برای آشنایی با طراحی و پیاده سازی میکروسرویس در لاراول این مقاله را از دست ندهید.


35. متد ()whereJsonContains

چرا: برای کوئری از ستون JSON برای مقادیر خاص.
وقتی که: از آن برای جستجو در ستون های JSON حاوی آرایه ها یا آبجکت استفاده کنید.

$users = User::whereJsonContains('options->languages', 'en')->get();

36. متد ()findOr

چرا: برای بازیابی مدل یا اجرای یک فراخوان در صورت پیدا نشدن.
وقتی که: از آن برای رسیدگی به عدم وجود رکورد با منطق سفارشی استفاده کنید.

$user = User::findOr(1, function () {
    return 'User not found';
});

37. متد ()lockForUpdate

متد ()lockForUpdate در ORM لاراول Eloquent برای قفل کردن ردیف های پایگاه داده برای به روز رسانی در یک تراکنش استفاده می شود. هنگامی که این متد را برای یک کوئری اعمال می کنید، تا زمانی که تراکنش فعلی تکمیل شود، دیگر تراکنش های پایگاه داده از تغییر ردیف های انتخاب شده جلوگیری می کند. این یکپارچگی داده ها را تضمین می کند و از تداخل زمانی که چندین تراکنش سعی می کنند ردیف های مشابه را به طور همزمان به روز کنند، جلوگیری می کند.

چرا: برای اعمال یک قفل "برای به روز رسانی" به درخواست.
وقتی که: از آن برای جلوگیری از تغییر ردیف‌ها توسط سایر تراکنش‌ها در طول تراکنش استفاده کنید.

$user = User::where('email', 'example@example.com')->lockForUpdate()->first();

38. متد ()sharedLock

چرا: برای اعمال یک "قفل مشترک" به کوئری.
وقتی که: از آن برای قفل کردن ردیف های انتخاب شده برای مدت تراکنش استفاده کنید.

فرض کنید یک برنامه مالی دارید که در آن کاربران می توانند موجودی حساب خود را مشاهده کنند. می‌خواهید اطمینان حاصل کنید که وقتی کاربر موجودی خود را بررسی می‌کند، مبلغ نمایش داده شده ثابت می‌ماند حتی اگر تراکنش‌های دیگر موجودی حساب را همزمان به‌روزرسانی کنند. می‌توانید از ()sharedLock برای قفل کردن ردیف‌های مربوط به حساب کاربر در طول تراکنش استفاده کنید.

use App\Models\Account;

DB::transaction(function () use ($userId) {
    $account = Account::where('user_id', $userId)->sharedLock()->first();
    // Display the user's account balance
});

برای آشنایی با سرویس کانیتنر و تزریق وابستگی در لاراول این مقاله را بررسی کنید.

39. متد ()withSum

چرا: برای افزودن مجموع ویژگی یک مدل مرتبط به نتیجه.
وقتی که: از آن برای جمع‌آوری داده‌های مدل‌های مرتبط، مانند مجموع مجموع سفارش‌ها استفاده کنید.

$users = User::withSum('posts', 'views')->get(); // total posts

فرض کنید یک مدل کاربر دارید و هر کاربر می تواند چندین سفارش داشته باشد. شما می خواهید لیستی از کاربران را به همراه مجموع مبلغ سفارش آنها بازیابی کنید. برای رسیدن به این هدف می توانید از ()withSum استفاده کنید.

use App\Models\User;

$usersWithTotalOrderAmount = User::withSum('orders', 'amount')->get();

foreach ($usersWithTotalOrderAmount as $user) {
    echo "User: {$user->name}, Total Order Amount: {$user->orders_sum_amount}\n";
}

در این مثال، withSum('orders', 'amount') برای بازیابی مجموع کل ستون مقدار از رابطه سفارشات برای هر کاربر استفاده می شود. مجموع جمع‌آوری شده به‌عنوان یک ویژگی ایجاد شده به‌صورت پویا (orders_sum_amount) در هر شی کاربر در دسترس قرار می‌گیرد.


با استفاده از ()withSum، می‌توانید داده‌های جمع‌آوری‌شده را از مدل‌های مرتبط در کنار نتیجه کوئری اصلی به‌طور کارآمد بازیابی کنید، کد خود را ساده‌تر کرده و عملکرد را بهبود می‌بخشید.

40. متد ()withCount

متد withCount در ORM لاراول Eloquent برای بازیابی مدل‌های مرتبط به همراه تعداد مدل‌های مرتبط استفاده می‌شود. این زمانی مفید است که بخواهید تعداد رکوردهای مرتبط را بدون نیاز به انجام کوئریهای اضافی یا شمارش دستی بازیابی کنید.

چرا: برای شمارش تعداد مدل های مرتبط.
زمانی که: از آن برای دریافت تعداد رکوردهای مرتبط، مانند تعداد پست‌های هر کاربر، استفاده کنید.

use App\Models\User;

$usersWithPostCounts = User::withCount('posts')->get();

foreach ($usersWithPostCounts as $user) {
    echo "User: {$user->name}, Post Count: {$user->posts_count}\n";
}

در این مثال، withCount('posts') برای بازیابی تعداد پست های مرتبط با هر کاربر استفاده می شود. تعداد پست‌ها به‌عنوان یک ویژگی ایجاد شده به صورت پویا (posts_count) در هر شی کاربر در دسترس است.

با استفاده از ()withCount، می توانید به طور موثر تعداد رکوردهای مرتبط را از پایگاه داده در کنار نتیجه کوئری اصلی بازیابی کنید، کد شما را ساده کرده و عملکرد را بهبود می بخشد.

 

برای آشنایی با روابط در لاراول این مقاله را بررسی کنید.


نتیجه

ما در Eloquent بسیار عمیق فرو رفته ایم. ما در مورد 40 متد ORM که به ندرت استفاده می شود صحبت کرده ایم که هر توسعه دهنده لاراول باید بداند، پس لذت ببرید!

اما به عنوان هدیه نهایی برای خواندن تا آخر، در اینجا 10 متد دیگر وجود دارد که گردش کار شما را بهبود می بخشد و بهره وری شما را افزایش می دهد.


()oldest: نتایج کوئری را بر اساس ستون مشخص شده به صورت صعودی مرتب می کند.
()latest: نتایج کوئری را بر اساس ستون مشخص شده به ترتیب نزولی سفارش می دهد.
()has: کوئری را فیلتر می کند تا فقط رکوردهایی را شامل شود که دارای رابطه هستند.
()WhereHas: کوئری را فیلتر می کند تا فقط رکوردهایی را شامل شود که رابطه ای مطابق با شرایط خاص دارند.
()doestHave: کوئری را فیلتر می کند تا فقط رکوردهایی را شامل شود که رابطه ندارند.
()whereDoesntHave: کوئری را فیلتر می کند تا فقط رکوردهایی را شامل شود که رابطه منطبق با شرایط خاص ندارند.
()withPivot: ستون های جدول محوری اضافی را برای بازیابی در هنگام کوئری از یک رابطه چند به چند با ستون های جدول میانی مشخص می کند.
()morphTo: ​​یک رابطه چند شکلی را تعریف می کند که در آن مدل مرتبط می تواند به چندین مدل منبع تعلق داشته باشد.
()morphMany: یک رابطه چند شکلی یک به چند را تعریف می کند که در آن مدل مرتبط می تواند به مدل های منبع متعدد تعلق داشته باشد.
()morphToMany: یک رابطه چند شکلی چند به چند را تعریف می کند که در آن مدل مرتبط می تواند به چندین مدل منبع تعلق داشته باشد.

#laravel#laravel_elequent#الکونت#لاراول#لاراول_الکونت
نظرات ارزشمند شما :

در حال دریافت...

مقاله های مشابه

در حال دریافت...