برنامه نویسی

مدل های Laravel Demystified: ساده سازی عملیات پایگاه داده

مقدمه

قبل از اینکه به سمت راست شیرجه بزنیم ، بگذارید در مورد لاراول ، یک چارچوب قدرتمند PHP ، که بر روی معماری MVC (مدل-کنترل کننده) ساخته شده است ، صحبت کنم ، که منطق کاربرد را در سه مؤلفه بهم پیوسته سازماندهی می کند. در این معماری ، “M” مخفف “مدل” است که ما در این مقالات روی آن متمرکز شده ایم ، یک عنصر مهم که مسئول مدیریت تعامل داده ها بین برنامه شما و بانک اطلاعاتی است. مدل ها به عنوان پلی عمل می کنند که پرس و جو ، بازیابی و دستکاری داده های ذخیره شده در جداول پایگاه داده را ساده می کند.

لاراول با اجرای ظریف خود از ORM فصاحت (نقشه برداری شیء) ، این قدم را بیشتر می برد ، ما نمی توانیم در مورد مدل ها صحبت کنیم ، بدون اینکه کمی در مورد ORM فصاحت بدانیم ، فصیح یک روش بصری و بیانی برای تعامل با پایگاه داده شما فراهم می کند و به توسعه دهندگان اجازه می دهد برای کار با سوابق پایگاه داده به طوری که به جای نمایش داده های SQL RAW ، در کد خود اشیاء هستند. هر جدول پایگاه داده به طور معمول دارای یک مدل مربوطه است که به عنوان دروازه ای برای انجام عملیات در آن جدول عمل می کند.

مدل های موجود در Laravel چیزی بیش از دستگیرندگان داده هستند – آنها پایه و اساس مدیریت کارآمد پایگاه داده هستند. با محاصره منطق پایگاه داده در مدل ها ، لاراول تضمین می کند که برنامه شما تمیز ، سازمان یافته و نگهداری آسان باقی بماند. این که آیا شما در حال واکشی داده ها ، درج سوابق ، یا به روزرسانی اطلاعات هستید ، مدل ها این وظایف را ساده تر می کنند ، و تعاملات پایگاه داده را یکپارچه و سازگار با توسعه دهنده می سازند.

در این راهنما ، ما عمیق تر به دنیای مدل ها در لاراول شیرجه می زنیم ، هرچند که کاوش در نماها و کنترل کننده ها را نیز وسوسه می کنیم ، که MVC را تشکیل می دهد اما در حال حاضر ، ما بررسی خواهیم کرد که چگونه مدل ها عملیات پایگاه داده را ساده می کنند.
بیایید این سفر را برای کشف قدرت مدل های لاراول آغاز کنیم و کشف کنیم که چگونه می توانند تجربه توسعه وب شما را به عنوان یک توسعه دهنده PHP بالا ببرند!
مثل برادران ادو من می گویند ……… WA Gima Zẹ ẹdo (اجازه می دهد شروع کنیم) !!!!

مدل ها در لاراول چیست؟

از مقدمه ، من یا به اصطلاح ما قبلاً حدود 70 ٪ از مدل های موجود در لاراول را پوشش داده ایم. با این حال ، به خاطر وضوح و درک عمیق تر ، بیایید حتی بیشتر به این مؤلفه اساسی چارچوب بپردازیم.

در هسته اصلی معماری MVC Laravel (Model-View-Controller) مدل ، یک عنصر مهم است که نحوه ساخت ، دسترسی و دستکاری داده ها در برنامه شما را نشان می دهد. مدل های موجود در Laravel به عنوان رابط اصلی برای تعامل با پایگاه داده خود عمل می کنند و به عنوان یک نمایش مستقیم از جداول ذخیره شده در آن خدمت می کنند. هر مدل به طور معمول با یک جدول پایگاه داده خاص مطابقت دارد و به شما این امکان را می دهد تا عملیات مهمی مانند پرس و جو ، به روزرسانی ، درج و حذف داده ها را با استفاده از کد تمیز ، بیان و قابل خواندن انجام دهید.

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

به عنوان مثال ، به جای پراکندگی نمایش داده های SQL RAW در طول برنامه ، می توانید از ORM فصیح (ORM داخلی Laravel) استفاده کنید تا از طریق مدل ها با پایگاه داده خود در تعامل باشید. این رویکرد نه تنها کد شما را ساده می کند بلکه باعث می شود که بصری تر و مستعد خطاها باشد. علاوه بر این ، مدلها به شما این امکان را می دهند تا روابط مانند یک به یک ، یک به یک و بسیاری را تعریف کنید ، و این باعث می شود که با داده های مرتبط در چندین جداول کار کنید.

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

هدف از ایجاد یک مدل در لاراول چیست؟

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

1. تعامل مستقیم پایگاه داده
مدل ها به عنوان پلی بین برنامه و پایگاه داده شما عمل می کنند. به جای نوشتن نمایش داده های SQL RAW که در طول کد شما پراکنده است ، مدل ها به شما امکان می دهند با استفاده از روش های ساده و بیانی داده ها را بازیابی ، ایجاد ، بروزرسانی و حذف کنید. این انتزاع نه تنها باعث پاک تر شدن کد شما می شود بلکه خطر خطاها را نیز کاهش می دهد و خوانایی را بهبود می بخشد.

به عنوان مثال ، به جای نوشتن:

SELECT  FROM users WHERE id = 1;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شما به سادگی می توانید استفاده کنید:

$user = User::find(1);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این رویکرد نه تنها بصری تر بلکه با فلسفه لاراول برای لذت بخش کردن توسعه هماهنگ است.

2. سازمان داده های منطقی
هر مدل در Laravel یک جدول پایگاه داده خاص را نشان می دهد ، مانند Userبا Order، یا Productبشر این به داده های شما یک ساختار واضح و معنی دار می دهد که با نیازهای برنامه شما هماهنگ است. با سازماندهی داده های خود در مدل ها ، شما یک نمایش منطقی از طرحواره پایگاه داده خود ایجاد می کنید و درک و حفظ آن را آسان تر می کنید.

به عنوان مثال ، الف User مدل ممکن است نمایانگر یک باشد users جدول ، در حالی که Order مدل مطابق با یک orders جدول این نقشه برداری واضح تضمین می کند که پایگاه کد شما به خوبی سازمان یافته و به راحتی حرکت می کند.

3. روابط ساده
یکی از قدرتمندترین ویژگی های مدل های Laravel ، توانایی آنها در تعریف و مدیریت روابط بین جداول است. این که آیا این یک رابطه “یک به یک” است ، “بسیاری از افراد” و یا “یک به یک” ، مدل ها باعث می شوند که کار با داده های مرتبط با آن کار بی دردسر باشد.

به عنوان مثال ، اگر کاربر پست های زیادی داشته باشد ، می توانید این رابطه را در User مدل:

public function posts() {
    return $this->hasMany(Post::class);
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

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

$posts = User::find(1)->posts;
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این امر نیاز به پیوندهای پیچیده و پرس و جو دستی را از بین می برد و باعث صرفه جویی در وقت و تلاش شما می شود.

4. امنیت داده داخلی
مدل های Laravel با ویژگی های داخلی برای تقویت امنیت داده ها و جلوگیری از آسیب پذیری های مشترک همراه هستند. به عنوان مثال:

  • حفاظت از واگذاری انبوه: مدل ها به شما امکان می دهند تا با استفاده از این زمینه ها مشخص کنید که کدام قسمت ها می توانند دارای مجوز (به عنوان مثال از طریق ارسال فرم) باشند $fillable یا $guarded خواص این مانع از دستکاری داده های غیرمجاز می شود.

  • بازیگران ویژگی: شما می توانید تعریف کنید که چگونه ویژگی های خاصی باید ریخته شوند (به عنوان مثال ، تبدیل داده های JSON به یک آرایه یا مقادیر بولی به درست/نادرست) ، و اطمینان از سازگاری و امنیت داده ها.

  • اعتبار سنجی: در حالی که اعتبار سنجی به طور معمول در کنترلرها یا درخواست های فرم انجام می شود ، مدل ها همچنین می توانند قوانین اعتبار سنجی را در بر بگیرند و باعث می شوند که داده های شما قوی تر شود.

5. محاصره منطق تجارت
مدل ها فقط برای تعامل پایگاه داده نیستند بلکه مکانی عالی برای محاصره منطق کسب و کار هستند. با افزودن روش ها به مدل های خود ، می توانید منطق مربوط به موجودات داده خاص را متمرکز کنید. به عنوان مثال ، الف User مدل ممکن است شامل روش هایی برای محاسبه مقدار طول عمر کاربر ، بررسی وضعیت اشتراک آنها یا ارسال ایمیل تنظیم مجدد رمز عبور باشد.

این رویکرد کنترل کننده های شما را لاغر می کند و تضمین می کند که منطق برنامه شما مدولار و قابل استفاده مجدد است.

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

نحوه ایجاد یک مدل در لاراول

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

مرحله 1: برای ایجاد یک مدل از دستور artisan استفاده کنید
لاراول یک دستور صنایع دستی مناسب برای تولید مدل ها فراهم می کند. برای ایجاد یک مدل ، دستور زیر را در ترمینال خود اجرا کنید:

php artisan make:model Article
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این دستور پرونده جدیدی به نام ایجاد می کند Article.php در app دایرکتوری پرونده به این شکل خواهد بود:



namespace App;

use Illuminate\Database\Eloquent\Model;

class Article extends Model {
    // 
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در اینجا ، Article مدل یک جدول پایگاه داده را نشان می دهد (به طور معمول نامگذاری شده است articles). ORM فصیح لاراول به طور خودکار این مدل را در جدول مربوطه ترسیم می کند.

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

php artisan make:migration create_articles_table
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این یک پرونده مهاجرت در database/migrations دایرکتوری پرونده را باز کنید و طرح جدول را در up() روش:

public function up() {
    Schema::create('articles', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('topic');
        $table->string('content');
        $table->timestamps(); // Adds created_at and updated_at columns
    });
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

برای ایجاد جدول در پایگاه داده خود ، مهاجرت را اجرا کنید:

php artisan migrate
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله 3: یک کنترلر ایجاد کنید
برای رسیدگی به عملیات پایگاه داده ، با استفاده از دستور artisan یک کنترلر ایجاد کنید:

php artisan make:controller ArticleController
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این پرونده ای به نام ایجاد می کند ArticleController.php در app/Http/Controllers دایرکتوری پرونده را باز کرده و روش هایی را برای بازیابی ، درج ، به روزرسانی و حذف داده ها اضافه کنید:



namespace App\Http\Controllers;

use App\Article;
use Illuminate\Http\Request;

class ArticleController extends Controller {

    // Retrieve all articles
    public function index() {
        $articles = Article::all();
        return view('homepage')->with('articles', $articles);
    }

    // Insert a new article
    public function insert() {
        $article = new Article;
        $article->topic = "View in Laravel";
        $article->content = "View is the data display at the user end.";
        $article->save();
        echo "Insert Successful!";
    }


    // Update an existing article
    public function update() {
        $article = Article::find(1); // Find the article with ID 1
        $article->topic = "Laravel";
        $article->save();
        echo "Update Successful!";
    }

    // Delete an article
    public function delete() {
        $article = Article::find(1); // Find the article with ID 1
        $article->delete();
        echo "Delete Successful!";
    }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله 4: نمای ایجاد کنید
یک فایل مشاهده به نام ایجاد کنید homepage.blade.php در resources/views دایرکتوری این نمای لیست مقالات را نشان می دهد:




    </span>Models by Joel Asekhame<span class="nt"/>
    <span class="nt"/>
        <span class="nt">body</span> <span class="p">{</span>
            <span class="nl">font-size</span><span class="p">:</span> <span class="m">20px</span><span class="p">;</span>
        <span class="p">}</span>
    <span class="nt"/>
<span class="nt"/>
<span class="nt"/>
    <span class="nt"><h2/><span class="ez-toc-section" id="Articles_Topics_foreacharticles_as_article_article-%3Etopic_endforeach_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D9%85%D8%A7%D9%85_%D8%B5%D9%81%D8%AD%D9%87_%D8%B1%D8%A7_%D9%88%D8%A7%D8%B1%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF_%D8%A7%D8%B2_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D9%85%D8%A7%D9%85_%D8%B5%D9%81%D8%AD%D9%87_%D8%AE%D8%A7%D8%B1%D8%AC_%D8%B4%D9%88%DB%8C%D8%AF_%D9%85%D8%B1%D8%AD%D9%84%D9%87_5_%D9%85%D8%B3%DB%8C%D8%B1%D9%87%D8%A7_%D8%B1%D8%A7_%D8%AA%D8%B9%D8%B1%DB%8C%D9%81_%DA%A9%D9%86%DB%8C%D8%AF_%D8%A8%D8%A7%D8%B2_%DA%A9%D8%B1%D8%AF%D9%86_routeswebphp_%D9%BE%D8%B1%D9%88%D9%86%D8%AF%D9%87_%D9%87%D8%A7_%D8%B1%D8%A7_%D8%A8%D8%B1%D8%A7%DB%8C_%D8%B1%D9%88%D8%B4_%D9%87%D8%A7%DB%8C_%DA%A9%D9%86%D8%AA%D8%B1%D9%84_%DA%A9%D9%86%D9%86%D8%AF%D9%87_%D8%AA%D8%B9%D8%B1%DB%8C%D9%81_%DA%A9%D9%86%DB%8C%D8%AF_use_AppHttpControllersArticleController_Homepage_route_to_display_articles_Route_get%22https_devto%22_ArticleController_class_index_Routes_for_insert_update_and_delete_operations_Route_getinsert_ArticleController_class_insert_Route_getupdate_ArticleController_class_update_Route_getdelete_ArticleController_class_delete_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D9%85%D8%A7%D9%85_%D8%B5%D9%81%D8%AD%D9%87_%D8%B1%D8%A7_%D9%88%D8%A7%D8%B1%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF_%D8%A7%D8%B2_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D9%85%D8%A7%D9%85_%D8%B5%D9%81%D8%AD%D9%87_%D8%AE%D8%A7%D8%B1%D8%AC_%D8%B4%D9%88%DB%8C%D8%AF_%D9%85%D8%B1%D8%AD%D9%84%D9%87_6_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87_%D8%B1%D8%A7_%D8%A7%D8%AC%D8%B1%D8%A7_%DA%A9%D9%86%DB%8C%D8%AF_%D8%B3%D8%B1%D9%88%D8%B1_%D8%AA%D9%88%D8%B3%D8%B9%D9%87_Laravel_%D8%B1%D8%A7_%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D8%AF%D8%B3%D8%AA%D9%88%D8%B1_%D8%B2%DB%8C%D8%B1_%D8%B4%D8%B1%D9%88%D8%B9_%DA%A9%D9%86%DB%8C%D8%AF_php_artisan_serve_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D9%85%D8%A7%D9%85_%D8%B5%D9%81%D8%AD%D9%87_%D8%B1%D8%A7_%D9%88%D8%A7%D8%B1%D8%AF_%DA%A9%D9%86%DB%8C%D8%AF_%D8%A7%D8%B2_%D8%AD%D8%A7%D9%84%D8%AA_%D8%AA%D9%85%D8%A7%D9%85_%D8%B5%D9%81%D8%AD%D9%87_%D8%AE%D8%A7%D8%B1%D8%AC_%D8%B4%D9%88%DB%8C%D8%AF_%D8%AE%D8%B1%D9%88%D8%AC%DB%8C_%D9%87%D8%A7%DB%8C_%D9%85%D8%AB%D8%A7%D9%84"></span></span>Articles Topics<span class="nt"/>
    <span class="nt"><ol/></span>
        @foreach($articles as $article)
            <span class="nt"><li/></span>{{ $article->topic }}<span class="nt"/>
        @endforeach
    <span class="nt"/>
<span class="nt"/>
<span class="nt"/>
</code></pre>
<div class="highlight__panel js-actions-panel">
<div class="highlight__panel-action js-fullscreen-code-action">
    <svg xmlns="http://www.w3.org/2000/svg" width="20px" height="20px" viewbox="0 0 24 24" class="highlight-action crayons-icon highlight-action--fullscreen-on"><title>حالت تمام صفحه را وارد کنید
    

از حالت تمام صفحه خارج شوید


مرحله 5: مسیرها را تعریف کنید
باز کردن routes/web.php پرونده ها را برای روش های کنترل کننده تعریف کنید:

use App\Http\Controllers\ArticleController;

// Homepage route to display articles
Route::get("https://dev.to/", [ArticleController::class, 'index']);

// Routes for insert, update, and delete operations
Route::get('/insert', [ArticleController::class, 'insert']);
Route::get('/update', [ArticleController::class, 'update']);
Route::get('/delete', [ArticleController::class, 'delete']);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله 6: برنامه را اجرا کنید
سرور توسعه Laravel را با استفاده از دستور زیر شروع کنید:

php artisan serve
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی های مثال

  1. عملکرد فهرست (بازیابی داده ها):
    لیستی از مقالات موجود در صفحه اصلی را نشان می دهد.
    شرح تصویر

  2. درج عملکرد:
    مقاله جدیدی را به پایگاه داده اضافه می کند و “درج موفقیت آمیز!”
    شرح تصویر
    شرح تصویر

  3. عملکرد به روزرسانی:
    موضوع مقاله را با شناسه 1 به روز می کند و “به روزرسانی موفقیت آمیز!”
    شرح تصویر
    شرح تصویر

  4. عملکرد را حذف کنید:
    مقاله را با شناسه 1 حذف می کند و “حذف موفقیت آمیز!”
    شرح تصویر
    شرح تصویر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا