
چگونه می توانیم رکوردهای پایگاه داده را در Eloquent Laravel حذف کنیم؟ در Eloquent می توانید به راحتی رکوردهای موجود در پایگاه داده را با استفاده از روش Parent Model Class حذف کنید. در واقع دستور link:delete که قبلاً در برنامه پایه بتا پیاده سازی شده است، می تواند لینک ها را بر اساس شناسه پیوند حذف کند.
برای حذف رکوردهای پایگاه داده در Eloquent Laravel، ابتدا باید یک دستور جدید برای حذف لیست ها ایجاد کنید. سپس تمام پیوندهای مرتبط با لیست حذف به لیست پیوندهای پیش فرض اختصاص داده می شود. در این مقاله آموزش کامل حذف رکوردهای پایگاه داده در لاراول را ارائه می دهیم، با ما همراه باشید.
نحوه حذف رکوردهای پایگاه داده در لاراول
در پنجره ترمینال، دستور زیر را برای راه اندازی Artisan جدید اجرا کنید:
docker-compose exec app php artisan make:command ListDelete
با این کار یک فایل ListDelete.php جدید در app/Console/Commands ایجاد می شود. فایل را در ویرایشگر کد مورد نظر خود باز کنید:
app/Console/Commands/ListDelete.php
با به روز رسانی این کد، می توانید لیست پیوند شده را حذف کنید. یک حلزون منحصر به فرد به شما می دهد. Unique Slug یک نام URL مناسب است و برای شناسایی هر دایرکتوری استفاده می شود.
وظایف زیر کاری است که باید در متد handle() انجام دهید:
- Slug ارائه شده توسط کاربر را دریافت کنید و بررسی کنید که آیا شاخصی با Slug منطبق در پایگاه داده وجود دارد یا خیر.
- اگر دایرکتوری معتبری پیدا نشد، یک پیغام خطا نمایش داده می شود.
- اگر دایرکتوری معتبری پیدا شود، از کاربر می خواهد آن را تایید کند.
- سپس پیوندهای لیست حذف شده را مجدداً به لیست پیش فرض اختصاص دهید.
- در نهایت لیست را از پایگاه داده حذف کنید.
نحوه حذف رکوردهای پایگاه داده در Eloquent Laravel
اگر تمام قسمتهای این سری را دنبال کردهاید، قبلاً کد مشابهی را هنگام ایجاد دستور LinkUpdate پیادهسازی کردهاید. تفاوت اصلی در حال حاضر این است که شما نیازی به درخواست اطلاعات اضافی از کاربر ندارید و قبل از اجرای متد ()delete، باید یک آپدیت جهانی برای تغییر لینک ها به دایرکتوری های دیگر اجرا کنید.
در این قسمت باید کد قالب موجود در فایل ListDelete.php را با کد زیر جایگزین کنید:
<?php namespace AppConsoleCommands; use AppModelsLink; use AppModelsLinkList; use IlluminateConsoleCommand; class ListDelete extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature="list:delete {list_slug}"; /** * The console command description. * * @var string */ protected $description = 'Delete Lists'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return int */ public function handle() { $list_slug = $this->argument('list_slug'); $list = LinkList::firstWhere('slug', $list_slug); if ($list === null) { $this->error("Invalid or non-existent List."); return 1; } if ($this->confirm("Confirm deleting the list '$list->title'? Links will be reassigned to the default list.")) { $default_list = LinkList::firstWhere('slug', 'default'); if (!$default_list) { $default_list = new LinkList(); $default_list->title="default"; $default_list->slug = 'default'; $default_list->save(); } $this->info("Reassigning links to default list..."); Link::where('link_list_id', $list->id)->update(['link_list_id' => $default_list->id]); $list->delete(); $this->info("List Deleted."); } return 0; } }
در نهایت فایل را ذخیره کنید.
برای آشنایی با فریم ورک لاراول مقاله زیر را از دست ندهید.
لاراول چیست؟
در کد قبلی، متد handle() سعی می کند لیست پیوندی را بر اساس Slug پیدا کند. اگر دایرکتوری معتبری پیدا نشد، برنامه با خطا خارج می شود. هنگامی که یک لیست معتبر یافت می شود، متد confirm() فراخوانی می شود و از کاربر می خواهد لیست را تایید کند.
پس از تایید، برنامه لیست پیش فرض را پیدا می کند یا در صورت لزوم یک لیست جدید ایجاد می کند و آن را به متغیر default_list$ اختصاص می دهد. سپس تمام پیوندهای مرتبط با لیست حذف شده را پیدا کرده و به روز می کند. علاوه بر این، یک فراخوانی زنجیرهای به متد ()update شناسه فهرست مرجع همه پیوندهای مطابق با پرس و جو را بهروزرسانی میکند. سپس این ردیف برای شما برجسته می شود.
سپس با استفاده از روش delete() که در زیر مشخص شده است، ایندکس حذف می شود. این متد برای تمامی مدل های Eloquent از طریق کلاس مدل والد در دسترس خواهد بود. برای حذف لیست، ابتدا باید دستور link:show را اجرا کنید تا تمام پیوندهای موجود در پایگاه داده را دریافت کنید:
docker-compose exec app php artisan link:show
Output +----+-------------------------------------------------+--------------+----------------------------------+ | id | url | list | description | +----+-------------------------------------------------+--------------+----------------------------------+ | ۱ | https://digitalocean.com/community | digitalocean | DO Community | | ۲ | https://digitalocean.com/community/tags/laravel | digitalocean | Laravel Tutorias at DigitalOcean | | ۳ | https://digitalocean.com/community/tags/php | digitalocean | PHP Tutorials at DigitalOcean | | ۴ | https://twitter.com/digitalocean | social | Twitter | | ۵ | https://dev.to/digitalocean | social | DEV.to | | ۶ | https://laravel.com/docs/8.x/eloquent | default | Laravel Eloquent Docs | +----+-------------------------------------------------+--------------+----------------------------------+
برای حذف دایرکتوری Digitalocean و برگرداندن این پیوندها به دایرکتوری پیش فرض، باید دستور زیر را اجرا کنید:
docker-compose exec app php artisan list:delete digitalocean
با تایپ Y و فشردن Enter، حذف را تایید کنید. سپس نتیجه زیر را خواهید دید:
Output Confirm deleting the list 'digitalocean'? Links will be reassigned to the default list. (yes/no) [no]: > y Reassigning links to default list... List Deleted.
اگر دوباره دستور link:show() را اجرا کنید، اطلاعات به روز شده را به صورت زیر مشاهده خواهید کرد:
Output +----+-------------------------------------------------+---------+----------------------------------+ | id | url | list | description | +----+-------------------------------------------------+---------+----------------------------------+ | ۱ | https://digitalocean.com/community | default | DO Community | | ۲ | https://digitalocean.com/community/tags/laravel | default | Laravel Tutorias at DigitalOcean | | ۳ | https://digitalocean.com/community/tags/php | default | PHP Tutorials at DigitalOcean | | ۴ | https://twitter.com/erikaheidi | social | Twitter | | ۵ | https://dev.to/erikaheidi | social | DEV.to | | ۶ | https://laravel.com/docs/8.x/eloquent | default | Laravel Eloquent Docs | +----+-------------------------------------------------+---------+----------------------------------+
حالا این برنامه دستور خاصی برای حذف لیست لینک دارد.
آموزش حذف رکوردهای پایگاه داده در لاراول Eloquent
نتیجه
در این مقاله در مورد ورودی های پایگاه داده در Eloquent Laravel صحبت کردیم و به طور کامل به شما آموزش دادیم که با چه دستوراتی می توانید این کار را انجام دهید. اگر در مورد نحوه حذف رکوردهای پایگاه داده در Eloquent Laravel سوال یا ابهامی دارید در قسمت نظرات با ما در میان بگذارید تا کارشناسان و مهندسین پارس پک در اسرع وقت شما را راهنمایی کنند.
سوالات متداول
1. چگونه یک رکورد را در Eloquent Laravel حذف کنیم؟
برای حذف یک رکورد در Eloquent Laravel، باید متد delete() را فراخوانی کنید:
$user = User::find(1); $user->delete();
همچنین با استفاده از متد ()struct می توانید یک کلید اصلی (آرایه کلیدهای اولیه) از رکوردهای مورد نظر خود را حذف کنید:
User::destroy(1); User::destroy([1, 2, 3]);
2. Eloquent Laravel چیست؟
Eloquent یک نگاشت شی رابطه ای (ORM) است که به طور پیش فرض در چارچوب لاراول گنجانده شده است. ORM نرم افزاری است که مدیریت رکوردهای پایگاه داده را با نمایش داده ها به عنوان اشیا تسهیل می کند و به عنوان یک لایه انتزاعی در بالای موتور پایگاه داده مورد استفاده برای ذخیره داده های برنامه کار می کند.
{ “@context”: “https://schema.org”، “@type”: “FAQPage”، “mainEntity”: [{
“@type”: “Question”,
“name”: “چگونه یک رکورد را در Eloquent لاراول حذف کنیم؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “رای حذف یک رکورد در Eloquent لاراول، باید متد ()delete را فراخوانی کنید:
$user = User::find(1);
$user->delete();
همچنین با استفاده از متد ()destroy، میتوانید یک کلید اصلی (آرایهای از کلیدهای اصلی) از رکوردهای مدنظرتان حذف کنید:
User::destroy(1);
User::destroy([1, 2, 3]);” } },{ “@type”: “Question”، “name”: “Eloquent Laravel چیست؟”، “acceptedAnswer”: { “@type”: “Answer”, “text”: “Eloquent یک نوع نگاشت رابطه ای یک ORM است که به طور پیش فرض در چارچوب لاراول گنجانده شده است. ORM نرم افزاری است که مدیریت رکوردهای پایگاه داده را با نمایش داده ها به عنوان اشیا تسهیل می کند و به عنوان یک لایه انتزاعی در بالای موتور پایگاه داده که برای ذخیره داده های برنامه استفاده می شود کار می کند.” } }]}
چگونه رکوردهای پایگاه داده را در Eloquent Laravel حذف کنیم؟ اولین بار در پارسپک به نظر می رسد.