سازنده کوئری

  • مقدمه
  •  دستورات select
  • اتصالات یا join
  • دستورات where پیشرفته
  • توابع تجمعی aggregate
  • عبارات raw
  • دستورات درج کردن یا insert
  • دستورات به روزرسانی یا update
  • دستورات حذف کردن یا delete
  • Union یا اتحادها
  • کوئری های کش کردن

مقدمه

سازنده کوئری (query builder) بانک اطلاعاتی، یک رابط کاربری روان و مناسب برای ایجاد نمودن و اجرای کوئری های بانک های اطلاعاتی فراهم می آورد. می تواند برای اجرای اکثر عملیات بانک اطلاعاتی در برنامه شما، استفاده شده و در تمام سیستم های بانک اطلاعاتی پشتیبانی شده ، کار می کند.

توجه: سازنده کوئری لاراول از متصل کننده پارامترهای PDO برای محافظت برنامه در مقابل حملات داخل SQL، استفاده می کند. نیازی نیست که رشته هایی را که به عنوان متصل کننده ارسال می شوند، پاک کنید.

دستورات select

نحوه بازیابی تمام ردیف های یک جدول

 

 

 

 

 

 

 

نحوه بازیابی یک ردیف از یک جدول

 

 

 

 

نحوه بازیابی یک ستون از یک ردیف

;(‘$name = DB::table(‘users’)->where(‘name’, ‘John’)->pluck(‘name

نحوه بازیابی لیستی از مقادیر ستون ها

                              ;(‘$roles = DB::table(‘roles’)->lists(‘title’);

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

;(‘$roles = DB::table(‘roles’)->lists(‘title’, ‘name

نحوه مشخص کردن یک شرط select

 

 

 

 

 

 

نحوه اضافه کردن یک شرط select به کوئری موجود

 

 

 

 

نحوه استفاده از اپراتورهای where

;()$users = DB::table(‘users’)->where(‘votes’, ‘>’, 100)->get

یا شرح

 

 

 

 

نحوه استفاده از where between

 

 

 

نحوه استفاده از where in با یک آرایه

 

 

 

 

 

نحوه استفاده از where null برای یافتن رکوردهایی با مقادیر ست نشده

 

 

 

دستورات Order By و Group By, و Having

 

 

 

 

 

جابه جایی و محدودیت ها

         ;()$users = DB::table(‘users’)->skip(10)->take(5)->get

اتصالات یا join

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

شرح اتصال اولیه

 

 

 

 

 

شرح اتسال left

                                                              (‘DB::table(‘users

 

 

 

همچنین می توانید شرط های join پیشرفته تری هم مشخص نمایید:

 

 

 

 

 

 

 

دستورات where پیشرفته

گاهی اوقات می توانید شرط های where پیشرفته ای ایجاد کنید مانند “where exist” و یا گروه بندی پارامترهای تو در تو. سازنده کوئری لاراول می تواند این کار را نیز انجام دهد:

گروه بندی پارامترها

 

 

 

 

 

 

 

کوئری بالا دستور sql زیر را تولید خواهد کرد:

(‘select * from users where name = ‘John’ or (votes > 100 and title <> ‘Admin

شرح موجودی ها یا exist

 

 

 

 

 

 

 

کوئری بالا دستور sql زیر را تولید خواهد کرد:

 

 

 

توابع تجمعی aggregate

سازنده کوئری همچنین متدهای تجمعی گوناگونی را فراهم می آورد مانند count ، max ، min ، avg و sum

نحوه استفاده از متدهای تجمعی

 

 

 

 

 

 

 

 

 

عبارات raw

گاهی اوقات ممکن است نیاز داشته باشید تا یک عبارت raw را در یک کوئری به کار بریم. این عبارات به عنوان رشته در کوئری وارد می شوند. بنابراین مراقب باشید که نقاط ورود SQL را ایجاد نکنید. برای ایجاد یک عبارت raw می توانید از متد DB::Raw استفاده کنید.

نحوه استفاده از یک عبارت raw

 

 

 

 

 

نحوه افزایش یا کاهش مقادیر یک ستون

 

 

 

 

 

 

 

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

 

 

دستورات درج کردن یا insert

درج کردن رکوردها در یک جدول

 

 

 

اگر جدول افزاینده id خودکار یا auto-incrementing id داشته باشد، از متد insertGetId برای درج کردن رکورد و بازیابی id استفاده نمایید:

نحوه درج کردن رکوردها در یک جدول با افزاینده ID خودکار یا auto incrementing ID

 

 

 

توجه: در زمان استفاده از PostgreSQL ؛ متد insertGetId انتظار دارد که ستون افزاینده خودکاری به نام ID موجود باشد.

نحوه درج کردن چندین رکورد درون یک جدول

 

 

 

 

دستورات به روزرسانی یا update

نحوه به روز رسانی رکوردها در یک جدول

 

 

 

دستورات حذف کردن یا delete

نحوه حذف کردن رکوردها در یک جدول

;()DB::table(‘users’)->where(‘votes’, ‘<‘, 100)->delete

نحوه حذف کردن تمام رکوردهای یک جدول

;()DB::table(‘users’)->delete

نحوه کم یا truncate کردن یک جدول

;()DB::table(‘users’)->truncate

Unionیا اتحادها

همچنین سازنده کوئری یا query builder، راه سریعی برای اتحاد یا “union”دو کوئری با هم فراهم می آورد:

نحوه اجرا کردن یک اتحاد کوئری یا Query Union

 

 

 

متد unionAll نیز موجود است و اثری مشابه متد union دارد.

کوئری های کش کردن

شما به آسانی میتوانید نتایج یک کوئری را با استفاده از متد remember کش نمایید.

نحوه کش کردن یک نتیجه کوئری

              ;()$users = DB::table(‘users’)->remember(10)->get

در این مثال، نتایج کوئری برای 10 دقیقه، کش خواهند شد. در زمانی که نتایج در حال کش هستند، کوئری در مقابل بانک اطلاعاتی اجرا نخواهد شد و نتایج از درایور کش پیش فرض که برای برنامه شما مشخص شده است، لود خواهد شد.

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

-تنظیمات

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

-تراکنش های پایگاه داده

-دسترسی به ارتباطات پایگاه داده

-ثبت لاگ کوئری ها

تنظیمات

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

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

 

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

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

نحوه اجرای یک کوئری select

;(($results = DB::select(‘select * from users where id = ?’, array(1

متد select همواره array ای از نتایج را باز خواهد گرداند.

نحوه اجرای یک دستور Insert

;((‘DB::insert(‘insert into users (id, name) values (?, ?)’, array(1, ‘Dayle

نحوه اجرای یک دستور Update

;((‘DB::update(‘update users set votes = 100 where name = ?’, array(‘John

نحوه اجرای یک دستور Delete

                                         ;(‘DB::delete(‘delete from users

توجه: دستورهای Update و Delete تعداد سطر های تحت تاثیر قرار گرفته توسط این عملیات را باز می گرداند.

نحوه اجرای یک دستور عمومی

;(‘DB::statement(‘drop table users

شما می توانید با استفاده از متد DB::listen از وقایع کوئری ها اطلاع یابید.

نحوه استفاده از دستور Listen

 

 

 

تراکنش های پایگاه داده

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

 

 

 

 

 

 

دسترسی به ارتباطات پایگاه داده

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

;(…)$users = DB::connection(‘foo’)->select

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

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

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

                                                        ;(‘DB::reconnect(‘foo

ثبت لاگ کوئری ها

به طور پیش فرض، لاراول یک فایل لاگ از تمام کوئری هایی را که برای یک درخواست اجرا می شوند، در حافظه نگه می دارد. اگرچه در برخی موارد مثلا زمانی که سطرهای بسیار زیادی وجود داشته باشد، منجر به استفاده بیش از حد برنامه از حافظه می شود. برای غیر فعال نمودن لاگ می توان متد disableQueryLog را به کار برد.

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

                                         ;()$queries = DB::getQueryLog

 

اسکرول به بالا