استفاده از پایگاه داده پایه
- پیکربندی
- خواندن / نوشتن اتصالات
- در حال اجرا کوئری ها
- معاملات پایگاه داده
- دسترسی به اتصالات
- ثبت پرس و جو
پیکربندی
لاراول ارتباط با پایگاه های داده و اجرای پرس و جوها را بسیار ساده می کند.
فایل پیکربندی پایگاه داده
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();