در این نوشته می خواهیم چگونگی برقراری ارتباط با پایگاه داده در لاراول را آموزش دهیم. لاراول از ORM (یا Object Relationship Mapper) برای انجام بسیار ساده کوئری ها کمک می گیرد به گونه ای که شما بدون نیاز به برنامه نویسی SQL می تواند با پایگاه داده هم کنشی (تعامل) داشته باشید. ولی پیش از فرستادن درخواست و دریافت پاسخ، باید لاراول را برای ارتباط پیدا کردن با پایگاه داده، پیکربندی کرده باشید. این نوشته به چگونگی پیکربندی لاراول برای به کارگیری MySQL می پردازد.

پیکربندی پایگاه داده در لاراول در فایل config/database.php انجام می شود. آرایه ای به نام returnاست که هر عنصر آن به گونه یک آرایه است که برای مشخص کردن پارامترهای اتصال به پایگاه داده به کار می روند. لاراول از پایگاه داده های MySQL، PostgreSQL، SQL Server و SQLite پشتیبانی می کند، پس درون متغیر آرایه ای return در فایل config/database.php، یک آرایه درونی برای پیکربندی هر کدام از این پایگاه داده ها وجود دارد.

شکل زیر آرایه های sqllite و mysql را نشان می دهد که به ترتیب برای ایجاد اتصال به پایگاه داده های SQLite و MySQL  به کار می روند. SQLite یک پایگاه بر پایه فایل است، به این معنی که پایگاه داده و جدول های آن درون یک فایل دودویی نگهداری می شوند. برای ارتباط بهآن تنها نام و مسیر فایل کافی است و همچنین هیچ آدرس و شماره پورتی بدست SQLite پشتیبانی نمی شود.

پیکربندی لاراول برای ارتباط با MySQL

در شکل بالا و بوسیله کلید default درون آرایه return مشخص است که پایگاه داده پیش فرض mysql است. همچنین درون کلید mysql که خودش از نوع آرایه است، باید چهار پارامتر host و port و database و username و password ازدرون فایل دیگری به نام env. خوانده شود. خواندن از این فایل بوسیله تابعی به نام env انجام می شود. بنابراین مقدار پارامترهای اتصال به پایگاه داده و البته دیگر تنظیم های درون لاراول، در فایل پنهانی به نام env. نگهداری می شوند و سپس می توان آنها را بوسیله تابع درونی خود لاراول به نام ()env خواند.

در شکل بالا فایل env. را باز کرده ایم که به رنگ آبی مشخص شد است. دربخش مشخص شده تنظیم های مربوط به پایگاه داده مشخص شده است. پارامتر DB_CONNECTION به صورت پیشفرض برابر با mysql است. DB_HOST آدرس MySQL Server را نشان می دهد و چون فایلهای پی اچ پی و خود MySQL Server در یک ماشین هستند، پس آدرس باید  127.0.0.1 یا نام localhost باشد. DB_PORT شماره درگاه (یا پورت) سرور پایگاه داده را نگه می دارد که به صورت پیشفرض برای MySQL برابر با 3306 است. DB_DATABASE نام پایگاه داده ای که می خواهیم به آن وصل شویم و DB_USERNAME و DB_PASSWORD به ترتیب نام کاربری و گذرواژه را تعیین می کنند. این تمام چیزی بود که باید انجام می دادیم.

در شکل زیر و پس از اتصابه به پایگاه داده MySQL نخست بوسیله CREATE DATABASE پایگاه داده ای به نام testdb را ایجاد کرده ایم و سپس یک کاربر به نام  amirnami ایجاد می کنیم که تنها می تواند به صورت محلی و بوسیله آدرس 127.0.0.1 به سرور MySQL وصل شود. سپس بوسیله GRANT ALL PRIVILEGES تمامی مجوزها را روی تمامی جدول ها و اشیا درون پایگاه داده به amirnami واگذار کرده ایم.

بنابراین با توجه به آنچه که گفتیم باید پارامترهای مربوط به پایگاه داده درون فایل env. را به صورت زیر ویرایش کنیم. توجه کنید که برای SQLite نیازی به نوشتن شماره پورت، آدرس و نام کاربری و گذرواژه نیست و تنها باید برابر کد زیر، مقدار DB_CONNECTION را به sqlite تغییر دهید و باید DB_DATABASE را برابر با فایل دودویی SQLite تنظیم کنید.

بررسی درستی اتصالبه پایگاه داده

 پس از تعیین پارامترهای اتصال درون فایل env. بهتر است درستی اتصال را بررسی کنید، پس نخست دستور زیر را در دایرکتوری پروژه لاراول اجرا کنید تا وارد کنسول پی اچ پی شوید.

سپس بوسیله کلاسی به نام DB و بوسیله متدهای آن، باید درستی اتصال را بررسی کنیم. دستور نخست زیر، وضیعت PDO درباره اتصال را نشان می دهد و دومین دستور، نام پایگاه داده ای که به آن وصل شدیم را بر می گرداند. شکل زیر خروجی هر دو دستور را نشان می دهد.