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

ایجاد Migration

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

برای ایجاد Migration ها باید دستور php artisan make:migration Migration_Name –create Target_Table_Name را همانند دستورهای زیر اجرا کنیم که به جای Migration_Name باید نام دلخواه برای Migration نوشته شود. برای نمونه می خواهیم مدل Student را ایجاد کنیم، که این نام در پایگاه داده برای جدول Student به کار می رود.

شکل بالا خروجی دستور php artisan make:migration create_student_table –create students را نشان می دهد که نتیجه آن ایجاد یک فایل در مسیر database/migrations است. در واقع یک کلاس ایجاد می شود که این کلاس همنام با نام Migration است که پیش روی make:migration نوشته بودید ولی دیگر کاراکترهای زیرخط (Underline) پاک می شوند. بنابراین create_student_table به نام کلاس CreateStudentTable تبدیل می شود. در شکل زیر می بنید که در کنار این فایل تازه، دو فایل دیگر وجود دارند که در نوشته پیسین آنها را آموزش داده ایم. در این فایل ها باید ساختار جدول، یعنی کلید اصلی، کلید خارجی، نامگذاری ستون ها، نوع ستون ها، مقدار پیش فرض و دیگر موارد را بنویسیم.

شکل زیر الگوی یک فایل ایجاد شده بوسیله دستور php artisan make:migration create_student_table –create students را نشان می دهد. نام کلاس برای این نمونه CreateStudentsTable است که می بینید همان الگوی بالا را دارد. این کلاس از کلاس پایه Migration مشتق شده است. در نوشته پسین مفهوم مهاجرت (Migration) را آموزش داده شده است. همچنین در بالا فایل و بوسیله دستور use سه کلاس Schema و Blueprint و Migration از فضاهای نام تعریف شده در لاراول، به فایل پیوست شده اند.

کلاس های مدل، دارای دو متد به نام ()up و ()down هستند و همانگونه که در توضیح (Comment) درون فایل می بینید، متد ()up برای مهاجرت دادن ویژگی های کلاس به درون پایگاه داده و کلاس ()down برای پاک کردن و از میان بردن مهاجرت به کار گرفته می شوند. منظور از مهاجرت، یعنی باید نام کلاس به نام جدول و نامویژگی ها به نام ستون ها نگاشت داده شوند. پس این وظیفه متد ()up است. اما وظیفه متد ()dwon پاک کردن اثر مهاجرت یا اثر اجرای متد ()up است.

تعریف جدول ها

پیش از آنکه چگونگی ایجاد جدول ها را در لاراول آموزش دهیم، می بایست مفهوم اسکیما در پایگاه داده ها را آموزش دهیم. اسکیما در پایگاه داده ها مجموعه ای از ساختارهای منطقی و اشیا پایگاه داده مانند جدول، ستون های جدول، نما (View)، اندیس ها (Index) و دیگر اشیا است. در لاراول برای ایجاد جدول، باید متد ()create از کلاس Schema را درون متد ()up به کار ببریم. این متد دارای دو آرگومان ورودی است، نخست یک رشته که نام جدول را در پایگاه داده مشخص می کند و دوم تابع بی نامی است که اشیا (متدهای) کلاس BluePrint را برای یک جدول ، دریافت می کند. شکل زیر ساده ترین حالت متد ()up پس از اجرای دستور php artisan make:model را نشان می دهد.

در شکل بالا نام جدول پس از نوشتن دستور php artisan make:model Student -m به صورت جمع students بوسیله خود لاراول نوشته شده است. بنابراین نام جدول پایگاه داده نیز students خواهد بود. آرگومان دوم یک تابع بی نام است که یک ورودی به نام table$ از گونه کلاس Blueprint را دریافت کرده است. سپس بوسیله این شی به متدهای کلاس BluePrint برای ایجاد ستون ها دسترسی خواهیم داشت. در این پیوند یک جدول از تمامی متدهای کلاس BluePrint برای تعریف ستون ها را می توانید بخوانید.

ایجاد کلید اصلی

کلید اصلی ستون ویژه ای است که مقدار آن یکتا (Unique) و غیر NULL است. از متد ()bigIncrements در لاراول ۵.۸ می توانید برای ایجاد ستونی به کار ببرید که، مقدار آن خودکار افزایش (Auto Increment) پیدا می کند و به عنوان کلید اصلی (Primary Key) نیز خواهد بود. بنابراین به صورت پیشفرض یک کلید اصلی به نام id برای جدول ایجاد می شود. تابع دیگری به نام ()increments نیز هست که از گونه int در پایگاه داده و افزایش خودکار مقدار است. تفاوت این دو تابع در این است که گونه ستون ()bigIncrements از گونه BigInt است ولی در ()increments گونه Int به کار گرفته می شود.

ایجاد ستون های رشته

در پایگاه داده ها گونه VARCHAR (یا Variable Character) برای نگهداری رشته ها با اندازه متغیر به کار گرفته می شوند. در پی اچ پی چنین چیزی نیست ولی لاراول متد ()string را فراهم کرده تا پس از انجام مهاجرت، ستون از گونه VARCHAR ایجاد شود. ورودی نخست نام ستون و ورودی دوم بیشینه (Maximum) اندازه ای است در ستون می توان نگهداری کرد. برای ایجاد گونه CHAR در پایگاه داده (رشته با اندازه ثابت) باید متد ()char را به کار ببریم.

ایجاد ستون های Bool

ستون هایی که تنها دو مقدار رادریافت می کنند، گونه آنها BOOLEAN است. در لاراول تابع ()bool برای این منظور فراهم شده است. برای نمونه می خواهید فعال یا غیر فعال بودن کاربر یا نمایش و عدم نمایش یک نوشته را مشخص کنید. آرگومان نخست این متد نیز، همانند دیگر متدها، نام ستون است.

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

  • برای گونه DECIMAL در پایگاه داده، باید متد ()decimal را به کار ببرید.
  • برای گونه DATE در پایگاه داده، باید متد ()date را به کار ببرید.
  • برای گونه DATATIME در پایگاه داده، باید متدهای ()dateTime و ()dateTimeZ را به کار ببرید.
  • برای گونه ENUM در پایگاه داده، باید متد ()enum را به کار ببرید.
  • برای گونه TEXT در پایگاه داده، باید متد ()text را به کار ببرید.
  • برای تعیین UNIQUE بودن مقدارهای ستون، پس تعریف نوع ستون، باید متد ()unique را به کار ببرید.
  • برای تعیین مقدار پیش فرض برای ستون، پس از تعریف نوع ستون، باید متد ()default را به کار ببرید.
  • برای تعیین NULL بودن ستون، پس از تعریف نوع ستون، باید متد ()nullable را به کار ببرید. اگر این متد را برای ستونی تعیین نکنید، آن ستون NOT NULL خواهد بود. همچنین خود متد ()nullable یک ورودی true یا false می گیرد. اگر مقدار false را به آن بفرستید، پس به معنی عدم NULL بودن و به معنی NOT NULL خواهد شد.

در این نوشته چگونگی ایجاد Migration بوسیله دستور php artisan make:migration را برای ایجاد و تعریف جدول ها را آموزس دادیم. در نوشته  مفهوم Migration و چگونگی انجام آن و تغییر در پایگاه داده را نشان می دهیم. پس از آموزش مفهوم Migration، چگونگی ایجاد کلاس مدل را خواهیم گفت.