نسخه:

استفاده از پایگاه داده پایه

پیکربندی

لاراول ارتباط با پایگاه های داده و اجرای پرس و جوها را بسیار ساده می کند. فایل پیکربندی پایگاه داده config/database.php . در این فایل شما می توانید تمام اتصالات پایگاه داده خود را تعریف کنید و همچنین مشخص کنید که کدام اتصال باید به طور پیش فرض استفاده شود. نمونه هایی برای همه سیستم های پایگاه داده پشتیبانی شده در این فایل ارائه شده است.

در حال حاضر لاراول از چهار سیستم پایگاه داده پشتیبانی می کند: MySQL، Postgres، SQLite و SQL Server.

خواندن / نوشتن اتصالات

گاهی اوقات ممکن است بخواهید از یک اتصال پایگاه داده برای دستورات SELECT و دیگری برای INSERT، UPDATE و DELETE استفاده کنید. لاراول این کار را آسان می کند و اتصالات مناسب همیشه مورد استفاده قرار می گیرند، چه از پرس و جوهای خام، چه از سازنده پرس و جو یا از Eloquent ORM استفاده کنید.

برای اینکه ببینید چگونه اتصالات خواندن/نوشتن باید پیکربندی شوند، بیایید به این مثال نگاه کنیم:

'mysql' => [
'read' => [
'host' => '192.168.1.1',
],
'write' => [
'host' => '196.168.1.2'
],
'driver' => 'mysql',
'database' => 'database',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
],

توجه داشته باشید که دو کلید به آرایه پیکربندی اضافه شده است: read و write . هر دوی این کلیدها دارای مقادیر آرایه ای هستند که شامل یک کلید است: host . بقیه گزینه های پایگاه داده برای read و write اتصالات از آرایه اصلی ادغام خواهند شد mysql . بنابراین، اگر بخواهیم مقادیر آرایه اصلی را نادیده بگیریم، فقط باید آیتم‌ها را در آرایه‌های read and قرار دهیم. write بنابراین، در این مورد، 192.168.1.1 به عنوان اتصال "خواندن" استفاده می شود، در حالی که 192.168.1.2 به عنوان اتصال "نوشتن" استفاده می شود. اعتبار پایگاه داده، پیشوند، مجموعه کاراکترها و همه گزینه های دیگر در mysql آرایه اصلی در هر دو اتصال به اشتراک گذاشته می شود.

در حال اجرا کوئری ها

هنگامی که اتصال پایگاه داده خود را پیکربندی کردید، می توانید پرس و جوهایی را با استفاده از DB نما اجرا کنید.

اجرای یک کوئری انتخابی

$results = DB::select('select * from users where id = ?', [1]);

این select روش همیشه یک array نتیجه را برمی گرداند.

شما همچنین می توانید یک پرس و جو را با استفاده از bindings با نام اجرا کنید:

$results = DB::select('select * from users where id = :id', ['id' => 1]);

اجرای یک بیانیه درج

DB::insert('insert into users (id, name) values (?, ?)', [1, 'Dayle']);

اجرای بیانیه به روز رسانی

DB::update('update users set votes = 100 where name = ?', ['John']);

اجرای یک بیانیه حذف

DB::delete('delete from users');

توجه: عبارات update و delete تعداد سطرهای تحت تأثیر عملیات را برمی گرداند.

اجرای یک بیانیه عمومی

DB::statement('drop table users');

گوش دادن به رویدادهای پرس و جو

می توانید با استفاده از DB::listen روش زیر به رویدادهای پرس و جو گوش دهید:

DB::listen(function($sql, $bindings, $time)
{
//
});

معاملات پایگاه داده

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

DB::transaction(function()
{
DB::table('users')->update(['votes' => 1]);
 
DB::table('posts')->delete();
});

توجه: هر استثنایی که در transaction بسته شدن ایجاد شود باعث می‌شود که تراکنش به‌طور خودکار به عقب برگردد.

گاهی اوقات ممکن است لازم باشد خودتان تراکنش را شروع کنید:

DB::beginTransaction();

می توانید یک تراکنش را از طریق rollback روش زیر برگردانید:

DB::rollback();

در نهایت، می توانید یک تراکنش را از طریق commit روش زیر انجام دهید:

DB::commit();

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

هنگام استفاده از چندین اتصال، می توانید از طریق DB::connection روش زیر به آنها دسترسی داشته باشید:

$users = DB::connection('foo')->select(...);

همچنین می توانید به نمونه خام و زیربنایی PDO دسترسی داشته باشید:

$pdo = DB::connection()->getPdo();

گاهی اوقات ممکن است نیاز باشد که دوباره به یک پایگاه داده معین متصل شوید:

DB::reconnect('foo');

اگر به دلیل فراتر رفتن از max_connections حد مجاز PDO اصلی نیاز به قطع ارتباط با پایگاه داده داده شده دارید، از روش زیر استفاده کنید disconnect :

DB::disconnect('foo');

ثبت پرس و جو

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

DB::connection()->enableQueryLog();

برای بدست آوردن آرایه ای از کوئری های اجرا شده، می توانید از getQueryLog روش زیر استفاده کنید:

$queries = DB::getQueryLog();