بررسی ساختار laravel و migration ها در لاراول

دسته بندی: آموزش
زمان مطالعه: 1 دقیقه
۱۶ خرداد ۱۳۹۶

به نام خدا و سلام. در خدمت شما هستیم با جلسه پنجم از دوره مجازی فریمورک laravel . در این جلسه قصد داریم ساختار دایرکتوری های پروژه ای که با laravel ایجاد شده رو بررسی کنیم . در ادامه هم می پردازیم به بحث migration ها و کاربرد آنها در مدیریت جدول های دیتابیس .

:: توجه

این مطلب یک جلسه از آموزش لاراول مبتدی تا پیشرفته می باشد و برای مشاهده آن باید در دوره ثبت نام کنید.

ثبت نام در آموزش لاراول مبتدی تا پیشرفته

چه امتیازی به این مقاله می دید؟
نویسنده کیوان علی محمدی
یادگیرنده ی همیشگی،برنامه نویس،نویسنده،عاشق خلق چیزهای عجیب،عاشق تحلیل داده ها، مسئول بخش فنی و هم بنیان گذار در سون لرن.

جلسات دوره

نظرات کاربران

میترا قلی پور

سلام استاد
ممنون از آموزش خوبتون
موقع اجرای دستور php artisan migrate سیستم جدول users رو کامل به وجود میاره ولی یک ارور میده و مانع از ایجاد جدول های دیگه میشه ولی وقتی از پوشه حذف میکنم این فایل رو بقیه به خوبی نصب می شن
ارورش به صورت زیرهست:

کیوان علی محمدی

سلام خدمت شما. متاسفانه خطایی که فرستادین نمایش داده نمیشه.

samin2000

با اجرای دستور php artisan migrate جدول reset_password به پایگاه داده اضافه نمیشه ولی جدول user و migration ایجاد شدن.این در حالی که migration آن وجود داره. علتش چیه؟

کیوان علی محمدی

سلام خدمت شما. هیچ خطایی دریافت نمی کنید؟

سجاد نصیری

سلام.
در phpmyadmin با ارور زیر مواجه می شوم:
Table phpmyadmin.pma__table_uiprefs dosnt exist in engine
دلیلش چی هست؟

دانیال یوسفی فر

سلام استاد.
ببخشید استاد برای بنده یک مشکلی پیش آمده است. وقتی دستور php artisan migrate را در ترمینال میزنم ارور زیر نمایش داده میشه.
سیستم عامل من: گنو/لینوکس اوبونتو 19.04
وب سرور: LiteSpeed
دیتابیس: MariaDB

  [Illuminate\Database\QueryException]                                                    
  could not find driver (SQL: select * from information_schema.tables where table_schema  
   = larafiles and table_name = migrations)                                               
                                                                                          

                         
  [PDOException]         
  could not find driver  
                        
خدابنده

سلام و تشکر
استاد اگر دیتابیس اولیه پروژه رو در phpmyadmin داشته باشیم چطور میشه از روی اون معادل migration رو تولید کرد (عکس اونچه آموزش دادید) cli کامندی در این باره داره یا راه حل دیگه ای که نخوایم مایگرشن ها بدون کد نویسی به سرعت ایجاد کنیم؟
مممنون

کیوان علی محمدی

سلام دستور خاصی توی خود لاراول بنده ندیدم. اما می تونی از این پکیج استفاده کنی.
https://packagist.org/packages/xethron/migrations-generator

امین

سلام
وقت بخیر
ببخشید دو تا سوال داشتم :
1- برای تغییر دادن اسم ستون های دیتابیسمون و همینطور نوع دادشون (هنگامی که دیتا داریم درون دیتابیسمون و نمیخوایم دیتامون حذف شن) تو ویدئو اشاره کردین ولی نگفتین چطوری میشه اینکارو کرد@ طبق مستندات لاراول گفته که برای تغییر نام ستون ها و نوع دادشون باید از کد به شکل زیر در migration مون استفاده کنیم
1.1-آیا درسته این راه؟
1.2-در زمانی که سایت روی هاست هستش و دسترسی نداریم و بخوایم این تغییرات رو بدیم باید تو لوکال انجام بدیم و بعد رو هاست سینک sync کنیم؟
1.3-بعد از تغییر این دو خط کدو باید حذف کنیم از فایل migration مون یا کامنتشون کنیم درسته؟

2- چند تا دیتابیس سایت لاراولی که دیدم ، همه این دیتابیس ها کلید خارجی رو در همون migration تعریف کرده بودن و مشکلی نبود فقط سوالم اینجاست که توی آموزش php استاد آوند میگفتن که در phpmyadmin بیایم و Relation view کلید خارجی رو اونجا تعریف کنیم و بعد در قسمت Designer >> PHP my admin نشون میداد که ستون مثلا یوزر آیدی در جدول سفارشات وصله به جدوله یوزر بعنوان کلید خارجی ، ولی در این دیتابیس های لاراولی که دیدم در این قسمت دیزاین یا همون قسمت Relation view هیچ چیزی تعریف نکرده بودن ولی سایت بدون مشکل کار میکرد ، باید آیا Relation view رو در دیتابیس های لاراولی تعریف کنیم یا با همون کد کافیه و کارشو میکنه و مشکلی بوجود نمیاد؟

//First Install doctrine/dbal
composer require doctrine/dbal
//Then
//For Change Column Data Type From Char To String
$table->string(‘name’)->change();
//For Change Column Name
$table->renameColumn(‘from’, ‘to’);
کیوان علی محمدی

1 – حتما باید از migration استفاده بشه و این روش مشکلی نداره.
1-2 پیشنهاد میشه تا حد امکان از هاست عادی استفاده نکنید و سرور اختصاصی داشته باشید
1-3 فایل های migration بعد از ایجاد و کدنویسی و اجرا اصلا نباید تغییر کنن تا روند تغییرات همیشه حفظ بشه.
2 – شما با هر کدوم که ایجاد کنید هیچ مشکلی نداره

یلدا شرفی

? ممنون

یلدا شرفی

مورد دوم اینه که من یکبار عملیات migrate رو با موفقیت انجام دادم ولی به دلایلی مجبور شدم database و لاراول رو پاک کنم و مجددا نصب کنم ولی پوشه migration رو نگه داشتم و الان وقتی میخوام migrate کنمشون میگه :Nothing to migrate.

یلدا شرفی

من پوشه migrations رو تغییر نام دادم مثلا اسمشو گذاشتم 2!
الان میگه بجای اینکه بزنی php artisan make:migration باید بزنی php artisan make:2

من مجددا هم اسم فولدر رو به migrations تغییر دادم ولی بازم با اجرای دستو php artisan migrate و هر دستور مرتبط با migration به خطای زیر میخورم
Cannot add a required argument after an optional one.

و با اجرای دستور
composer dump-autoload

خطای زیر داده میشه:
Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1

کیوان علی محمدی

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

کیوان علی محمدی

فایل های migration رو باید دوباره بسازید.

یلدا شرفی

سلام من موقع migrate با این خطا مواجه میشم

 Cannot add a required argument after an optional one.
کیوان علی محمدی

سلام دستور رو چطوری می نویسید؟

مهدی محمدی

سلام.
من با mingw میتونم migration ایجاد کنم و توی phpstorm بهم نشون میده که پایین بقیه migration ها ایجاد شده ولی وقتی <> رو میزنم فقط همون دو
migration که خودش ایجاد کرده بود را نشان میدهد…و جدول جدید که من میخوام رو ایجاد نمیکنه…چرا؟الان چیکار کنم؟

کیوان علی محمدی

سلام. بهترین روش اینه که حتما gitbash رو نصب کنید و فقط از همون استفاده کنید.

کیوان علی محمدی

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

پایان زمان پشتیبانی

دانشجوی گرامی، بازه پشتیبانی فعال برای این دوره ۳ ماه است که برای شما به پایان رسیده است.

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

نیاز به لاگین

برای ارسال دیدگاه و یا پرسیدن سوال خود در این قسمت، باید در سایت لاگین شوید.