کوئری با if در فریم ورک لاراول

کوئری با if در فریم ورک لاراول

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

زمان مطالعه: 3 دقیقه
بازدید: 828
پرسش و پاسخ: 0

کوئری های منعطف همراه با if در فریم ورک لاراول

افزودن if به کوئری در لاراول

لاراول این قابلیت را دارد که کوئری خود را به چند قسمت تبدیل کنید و در آخر تمام قسمت های تقسیم شده را واحد کرده و از دیتابیس واکشی اطلاعات را انجام دهید افزودن if به کوئری در لاراول یک ویژگی جالب می باشد که مثال خود را با تعیین فیلد های جدول و کوئری بر روی جدول مورد نظر پیش خواهیم برد.

فیلدهای جدول برای اعمال if در لاراول

بر فرض یک جدول به نام product داریم که محصولات ما را نگه داری می کند با فیلدهای ذیل که قرار است شرط if بر روی کوئری آن در لاراول اجرا شود:

  • id (شناسه محصول)
  • title (نام محصول)
  • entity (موجودی کمترین مقدار 0)
  • color (رنگ محصول : قرمز، آبی ، زرد ، بنفش)

خوب مثال خود را با یک کوئری ساده، واکشی محصول با شناسه شروع می کنیم که شناسه برای متد مورد نظر ما ارسال می شود

public function show($id)
{
	$query=Product::findOrFail($id);
	return $query;
}

 

کوئری پیچیده در لاراول

برای یک کوئری پیچیده در لاراول نیاز است که ما از ورودی های متد خود اطلاعی نداشته باشیم و در صورت مقدار داشتن یک ورودی در کوئری اعمال شود مثلا ما می خواهیم تمام محصولات با رنگ قرمز و موجودی برابر تعداد مشخص شده توسط کاربر باشد را از دیتابیس خود واکشی کنیم توجه کنید که قرار است این دو مقدار را کلاینت مقدار دهی کند:


public function show(Request $request)
{
	$query=Product::query();
	if(isset($request->color))
	{
		$query->where('color',$request->color);
	}
	if(isset($request->entity))
	{
		$query->where('entity',$request->entity);
	}
	$query=$query->get();
	return $query;
}

این مثال برای کوئری هایی که ورودی خود را به صورت ajax از کاربر برای جستجو در محصولات وارد می کنند بسیار کاربردی می باشد و جدا کردن کوئری به قسمت های کوچکتر به شما کمک می کند تا داده های مقداردهی شده در شروط شرکت کنند و نتیجه براساس آنها در واکشی از دیتابیس در فریم ورک لاراول بازگشت داده شود اگر بخواهیم کوئری بالا را برای تمام ستون های جدول کامل کنیم به صورت ذیل خواهد بود:

public function show(Request $request)
{
	$query=Product::query();
	if(isset($request->color))
	{
		$query->where('color',$request->color);
	}
	if(isset($request->entity))
	{
		$query->where('entity',$request->entity);
	}
	if(isset($request->title))
	{
		$query->where('title','Like','%'. $request->title .'%')
	}
	$query=$query->get();
	return $query;
}
بهزاد میرزازاده
مسیر درست با پرسش های درست ساخته می شود

مشاهده تمام مطالب نویسنده