معماری

قسمت دوازدهم آموزش فریم ورک لاراول

یک ستارهدو ستارهسه ستارهچهار ستارهپنج ستاره (2 votes, average: 5٫00 out of 5)
Loading...


قسمت دوازدهم آموزش فریم ورک لاراولReviewed by هاشم قنبری فرد on Nov 15Rating: 5.0قسمت دوازدهم آموزش فریم ورک لاراولبه کار با دیتابیس به روش Query Builder می پردازیم. روش بهتر و آسانتر برای کار با دیتابیس در لاراول به جای نوشتن کامل کوئری استفاده از Query Builder می باشد.

 

به نام و یاد خدا

سلام عرض می کنم خدمت کاربران سایت دانشجویان کامپیوتر امیدوارم سربلند و پیروز باشید.

 

 

این فریم ورک در سال های 2014 و همچنین 2013 به عنوان محبوب ترین فریم ورک php مورد استفاده قرار گرفته است. همچنین طبق آمار این فریم ورک در سال 2015 هم به عنوان برترین فریم ورک بین فریم ورک های php معرفی گردیده است. همچنین در سال 2016 آمار نشان می دهد که این فریم ورک جای خوبی در بین فریم ورک های php پیدا کرده است. و با اختلاف فاحشی از مابقی فریم ورک ها فاصله گرفته است.

 

خوب دیگه وقت آن رسیده که دلیل اصلی که این فریم ورک به این شهرت و محبوبیت رسیده را بیان کنم. راستش این فریم ورک سن بالایی دارد و خیلی زمان زیادی از پیدایش آن گذشته است. در سال های ابتدایی که این فریم ورک معرفی و منتشر شد استفاده از composer در دستور کارآن قرار نداشت و هیچ خبری از composer نبود و زیاد مورد توجه قرار نگرفت تا این که بعد از گذشت مدتی با اضافه کردن composer به فریم ورک لاراول این فریم ورک پیشرفت به سزایی کرد و به یکباره در صدر فریم ورک های php قرار گرفت. Composer با قدرتی که به فریم ورک لاراول داد کنار قدرت بالای کد نویسی و سرعت بالایی که داشت به تمام نیاز کاربران خود جواب داد و به این محبوبیت و شهرت رسید.

قدرت بی نظر لاراول و استفاده زیاد از این فریم ورک این فریم ورک را خیلی خیلی سرتر از دیگر فریم ورک های php کرده است.

نکته قابل توجه استفاده از این فریم ورک در ایران می باشد. طبق بررسی های انجام شده پرکاربرد ترین فریم ورک در بین فریم ورک های php در ایران هم همین فریم ورک لاراول می باشد. و در ایران نیز از جای خوبی برخوردار می باشد.

 

آموزش فریم ورک لاراول
آموزش فریم ورک لاراول

 

دوازدهمین  قسمت از آموزش فریم ورک لاراول:

 

در این قسمت از آموزش فریم ورک لاراول به کار با دیتابیس به روش Query Builder می پردازیم. روش بهتر و آسانتر برای کار با دیتابیس در لاراول به جای نوشتن کامل کوئری استفاده از Query Builder می باشد. شما می توانید اکثر عملیات های دیتابیس را در برنامه تان انجام بدهید و این کوئری ها در همه دیتابیس هایی که لاراول ساپورت می کند کار کند. در ضمن کوئری بیلدر لاراول از bind کردن پارامترها استفاده می کند که برنامه تان را در برابر حملات SQL Injection محافظت میکند.

 

SELECT یا انتخاب

 

برای انتخاب تمامی رکوردهای یک جدول ابتدا نام جدول موردنظر را به متد table و سپس با متد get رکوردها را واکشی میکنیم.

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

foreach ($users as $user)

{

var_dump($user->name);

}

 

برای استفاده از شرط در کوئری از متد where استفاده می کنیم و این متد سه پارامتر میگیرد که اولی نام ستون موردنظر و دومی operator شرط  = , > , <, <= و سومین پارامتر هم مقدار موردنظر است. در صورتی که پارامتر دوم را ننویسیم به صورت پیش فرض عملگر= در نظر گرفته می شود. متد first هم اولین رکورد که با شرط فوق همخوانی داشته باشد را برمیگرداند که برای بازیابی یک رکورد استفاده می شود. در صورتی که چند رکورد را بخواهیم بازیابی کنیم از متد get استفاده میکنیم.

 

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

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

 

در صورتی که بخواهیم مقدار یک ستون خاص را که در یک شرط صدق میکند را بازیابی کنیم از متد pluck استفاده و نام ستون را به آن میدهیم. اگر بخواهیم لیست مقادیر یک ستون را واکشی کنیم از متد lists استفاده و مقدار ستون را به عنوان پارامتر به آن میدهیم که خروجی آن یک آرایه است و می توانیم نام ستون دیگری را هم به عنوان پارامتر دوم به آن بدهیم تا کلید آرایه مقادیر ان ستون باشند.

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

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

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

 

استفاده ازor وand برای جدا کردن شرط ها

 

برای این کار کافی است بعد از متد where که نوشتیم متدorwhere را استفاده کنیم:

$users = DB::table(‘users’)

->where(‘votes’, ‘>’, 100)

->orWhere(‘name’, ‘John’)

->get();

عبارت بالا معادل کوئری زیر است

SELECT * FROM users WHERE votes > 100 OR name = ‘john’

 

اگر دوباره از متد where استفاده کنیم معادل and در نظر گرفته می شود.

 

استفاده از متدهای جادویی شرط

 

روش بهتر و با کدنویسی کمتر استفاده از متدهای جادویی هست. در مثال های زیر کوئری های معادل آنها را هم نوشته ام:

//SELECT * FROM users WHERE id=1 LIMIT 1;

$admin = DB::table(‘users’)->whereId(1)->first();

//SELECT * FROM users WHERE id=2 AND email = ‘john@doe.com’ LIMIT 1;

$john = DB::table(‘users’)

->whereIdAndEmail(2, ‘john@doe.com’)

->first();

//SELECT * FROM users WHERE name=’Jane’ OR age = 22 LIMIT 1;

$jane = DB::table(‘users’)

->whereNameOrAge(‘Jane’, 22)

->first();

 

استفاده از Order By و Group By و Having با کوئری بیلدر

$users = DB::table(‘users’)

->orderBy(‘name’, ‘desc’)

->groupBy(‘count’)

->having(‘count’, ‘>’, 100)

->get();

 

همچنین می توانیم از LIMIT به همراه آفست در کوئری استفاده کنیم .

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

در مثال بالا کوئری میگوید که از رکورد دهم در جدول users راانتخاب کن و تا ۵ رکورد را واکشی کن. )شماره گزاری رکوردها از صفر شروع میشود(

 

JOIN کردن

 

با متد join می توانید دو یا چند جدول را باهم JOIN کنید. این متد 2 پارامتر می گیرد که اولی جدولی که میخواهیم به آن پیوند بزنیم و پارامترهای بعدی فیلدهایی که باید باهم مساوی باشند را قرار میدهیم.

DB::table(‘users’)

->join(‘contacts’, ‘users.id’, ‘=’, ‘contacts.user_id’)

->join(‘orders’, ‘users.id’, ‘=’, ‘orders.user_id’)

->select(‘users.id’, ‘contacts.phone’, ‘orders.price’)

->get();

 

در مثال بالا به سه جدول contacts و users و orders پیوند زده شده است.

 

با کوئری بیلدر می توانیم با توابع جمعی MIN و MAX و SUM و … تمام مقادیر اسکالر یک ستون را محاسبه کرده و مقداری اسکالر تولید می کند.

 

$users = DB::table(‘users’)->count();

$price = DB::table(‘orders’)->max(‘price’);

$price = DB::table(‘orders’)->min(‘price’);

$price = DB::table(‘orders’)->avg(‘price’);

$total = DB::table(‘users’)->sum(‘votes’);

 

درج کردن (INSERT)

 

با استفاده از متد  INSERT می توانیم در جدول مورد نظر مقادیری را درج کنیم. مقادیر را در آرایه قرار می دهیم و به عنوان پارامتر به آن می دهیم. کلیدهای آرایه نام ستون جدول مورد نظر است.

DB::table(‘users’)->insert(

[’email’ => ‘john@example.com’, ‘votes’ => 0]

);

$id = DB::table(‘users’)->insertGetId(

[’email’ => ‘john@example.com’, ‘votes’ => 0]

);

DB::table(‘users’)->insert([

[’email’ => ‘taylor@example.com’, ‘votes’ => 0],

[’email’ => ‘dayle@example.com’, ‘votes’ => 0]

]);

 

اگر در جدولتان فیلد ID به صورت Auto-increment است می توانید از متد insertGetId استفاده کنید که بعد از درج کوئری ID که تولید شده را به عنوان خروجی برمیگرداند. در مثال سوم در بالا هم همانظور که می بینید در صورتی که بخواهید چندین رکورد را باهم درج کنید کافیست رکوردها را به عنوان پارامتر به متد INSERT بدهیم و با ویرگول ازهم جدا کنیم.

 

به روزرسانی (UPDATE)

 

 

با استفاده از متد UPDATE که یک آرایه به ان میدهیم که کلید های آن نام ستون موردنظر در جدول و مقادیر آن هم مقدار جدید می باشد رکوردها را آپدیت کنیم.

 

DB::table(‘users’)

->where(‘id’, 1)

->update([‘votes’ => 1]);

 

همچنین می توانیم با متد increment مقدار ستونی را یک واحد افزایش دهیم یا با ذکر یک پارامتر دوم تعداد افزایش را به طور مثال در مثال زیر ۵ واحد مشخص کنیم. متد decrement هم مقدار را کاهش می دهد و مانند متد قبلی عمل میکند.

 

DB::table(‘users’)->increment(‘votes’);

DB::table(‘users’)->increment(‘votes’, 5);

DB::table(‘users’)->decrement(‘votes’);

DB::table(‘users’)->decrement(‘votes’, 5);

DB::table(‘users’)->increment(‘votes’, 1, [‘name’ => ‘John’]);

 

در مثال آخر هم همانظور که می بینید هم می توانیم عمل افزایش را انجام دهیم و هم آپدیت سایر مقادیر ستون های جدول را که به عنوان پارامتر سوم و از نوع آرایه به آن می دهیم.

 

حذف کردن (delete)

 

با استفاده از متد delete می توانیم رکوردی یا همه رکوردهای جدول را حذف کنیم. اگر از شرط استفاده نکنیم همه رکوردهای جدول حذف می شوند. با استفاده از متد truncate هم می توانیم همه مقادیر یک جدول را حذف کنیم با این تفاوت که truncate هیچ شرطی نمیگیره و سریعتر از delete هست یا تفاوت دیگر آن این است که id های اختصاص داده شده به رکوردها را هم reset میکند ولی در delete اینگونه نیست.

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

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

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

 

با استفاده از متد union می توانیم دو کوئری را باهم اجتماع کنیم:

 

$first = DB::table(‘users’)->whereNull(‘first_name’);

$users = DB::table(‘users’)->whereNull(‘last_name’)->union($first)->get();

 

قفل کردن جدول هنگام اجرای عملیات

 

در صورتی که قصد دارید در هنگام انجام عملیات SELECT جدول قفل شود میتوانیم به صورت زیر عمل کنیم:

 

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

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

 

با استفاده از متد sharedLock جدول را به ظور کامل قفل می کنیم و با متد lockForUpdate جدول را هنگام عملیات SELECT فقط برای به روزرسانی قفل می کنیم.

برای این که بهتر و کاربردی تر با این مبحث آشنا شوید حتما ویدئو این قسمت را تماشا کنید.

 

 

 

دانلود
دانلود

 

ویدئو این قسمت را می توانید به صورت آنلاین مشاهده نمایید یا ویدئو را با کیفیت اصلی دانلود کنید.

 

 

اگه می خواهید این فریم ورک را خوب یاد بگیرید این دوره را از دست ندهید چون قراره از پایه این دوره آموزش داده بشه و از سطح مقدماتی شروع  و تا سطح پیشرفته پیش خواهیم رفت.

امیدوارم این آموزش ها رو از دست ندید.

موفق و پیروز باشید.

 

 

 

درباره ی admin

با سلام خدمت بازدیدکنندگان محترم هاشم قنبری فرد هستم دانشجوی کارشناسی ناپیوسته نرم افزار کامپیوتر مسلط به وردپرس, #c , ووکامرسی , برنامه نویسی اندروید, برنامه نویسی سمت سرور, طراحی صفحات وب و آشنا با بانک اطلاعاتی های SqlServer, MySql و آشنا با برنامه نویسی های پایتون, php ,html,css می باشم. همچنین با فریم ورک های لاراول (Laravel) و بوت استرپ هم به صورت حرفه ای کار کرده ام. در هر زمینه ای که کاربران مایل به آموزش آن باشند می توانم به کمک تون بیام و در مشکلاتتون می توانم کمک تون کنم. آرزوی موفقیت برای همه شما دوستان

همچنین ببینید

خرید آموزش CCNA سیسکو

پکیج فارسی آموزش مدرک CCNA سیسکو

پکیج فارسی آموزش مدرک CCNA سیسکوReviewed by هاشم قنبری فرد on Feb 19Rating: 5.0پکیج آموزشی …