تعداد بازدید: 1180

Query Builder

لاراول Query builder های به هم پیوسته با عملکرد شئ گرا را فراهم کرده است. ما معمولا در controller های برنامه نیاز به ایجاد کوئری داریم. شروع ایجاد کوئری از Illuminate\Support\Facades\DB می باشد. پس باید آن را در کلاس controller یا هر ماژول دیگری که در حال استفاده از query builder در آن هستیم درون ریزی (import) کرد.

برای ساخت کوئری باید جدول مورد نظر را با استفاده از متد table انتخاب کنیم و بعد عملیات های CRUD را روی آن انجام دهیم.

  • insert – Create
  • select – Read
  • update – Update
  • delete – Delete

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

انواع متد ها در DB Fecade

زمانی که از DB استفاده می کنیم یا به ما QueryBuilder بر میگرداند که قابل ارسال به view نخواهد بود و یا پارامتر قابل ارسال به view خواهد بود(array , collection , variable).

بنابراین ما برای ساخت Query Builder در لاراول دو نوع متد داریم :

متد های تمام کننده

مثل all , get , find که خروجی همان  مورد نظر ما را می دهند .

Collection {#247 ▼
  #items: array:3 [▼
    0 => categories {#248 ▶}
    1 => categories {#249 ▶}
    2 => categories {#250 ▶}
  ]
}

همون طور که می بینید خروجی بالا یک collection می باشد که خود آن امکانات بسیار زیادی در اختیار ما قرار می دهد تا بتوانیم در view ها استفاده کنیم. مثلا برای تبدیل collection به آرایه می توان از متد toArray استفاده کرد. یا می توان با contains چک کرد که المان خاصی در collection وجود دارد یا خیر. می توانید با مراجعه به لیست method های موجود برای ساختمان داده collection با امکانات آن آشنا گردید.

public function index()
{
	$users = DB::table('users')->get();

	return view('user.index', ['users' => $users]);
}

متد های تکمیلی

مثل where , join , union , orderBy که باید در پایان آن ها یکی از متد های تمام کننده متناسب آن مثل get بیاید تا بتوان آن را در view استفاده نمود.

Builder {#238 ▼
  #query: Builder {#239 ▶}
  #model: categories {#226 ▶}
  #eagerLoad: []
  #localMacros: []
  #onDelete: null
  #passthru: array:13 [▶]
  #scopes: []
  #removedScopes: []
}

خروجی کد بالا یک Builder است که می توان method های دیگری نظیر orderBy , with , … را به آن زنجیر (chain) کرد. متد های Builder با Collection با هم متفاوت است.

$users = DB::table('users')
            ->join('contacts', 'users.id', '=', 'contacts.user_id')
            ->join('orders', 'users.id', '=', 'orders.user_id')
            ->select('users.*', 'contacts.phone', 'orders.price')
            ->get();

نکته : اگر از Dynamic Property ها استفاده کنید مقدار مستقیم و قابل ارسال به view را به شما می دهد.

نکته : کلیه امکانات موجود در QueryBuilder در model موجود می باشد و از این رو یادگیری این موارد برای ما ضروری است.

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای Query Builder

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *