19
تشکر

Laravel: کار با دیتابیس – بخش دوم

Laravel

Laravel

در مطلب قبلی مقدمات پایه برای کار با دیتابیس را فرا گرفتیم، و همچنین با استفاده از کلاس هایی مانند insert, delete و … عملیات ها را در دیتابیس انجام دادیم. اما استفاده از این کلاس ها هیچ فرقی در استفاده مستقیم از PDO یا mysqli ندارد. امروز میخواهیم با کلاس های جدیدی آشنا شویم که استفاده از آنها کار ما را بسیار راحتتر خواهد کرد.

در ادامه مطلب همراه ما باشید…

همانطور که در مطلب قبلی هم به آن اشاره کردیم، تنظیمات دیتابیس در فایل database.php و در مسیر app/config قرار دارد.

از آنجا که مباحث مربوط به دیتابیس دارای گستردگی بالایی هستند، سعی مکنیم تنها به مقدمات آن اشاره کنیم.

با استفاده از کلاس table در فضای DB میتوان یک جدول را انتخاب کرد. برای مثال در کد زیر ما جدول users را با استفاده از کلاس table انتخاب کردیم، سپس توسط کلاس get تمام رکوردهای آن را درخواست میکنیم. سپس میتوانیم با استفاده از یک foreach در تمام خانه های users حرکت کنیم.

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

foreach ($users as $user) {
  echo $user->name;
}

همانطور که در کد بالا میبینید، ما از هیچ کد SQLیی استفاده نکردیم. و همین ویژگی باعث میشود کار با Laravel بسیار راحت شود.

خب حالا اگر بخواهیم یک شرط بگذاریم باید از کلاس where استفاده کنیم. همچنین در کد زیر به جای استفاده از کلاس get که تمام رکوردها را برگشت میداد از کلاس first استفاده کردیم، تا فقط رکورد اول را به ما بدهد. مزیت مهم استفاده از متد first به جای استفاده از LIMIT در SQL این است، که با اینکار دیگر ما یک آرایه نداریم، و Laravel به ما یک object میدهد، و دیگر لازم نیست از for یا foreach استفاده کنیم.

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

اگر بخواهید در شرط از and استفاده کنید و دو شرط را به کار بگیرید باید دو بار از کلاس where استفاده کنید.

$user = DB::table('users') 
                  -> where('name', '=', 'John') 
                  -> where('score', '>', 100) -> first();
echo $user -> name;

و یا اگر میخواهید از عمگر or در شرط استفاده کنید باید از متد orWhere استفاده کنید.

$users = DB::table('users') 
                    -> where('votes', '>', 100) 
                    -> orWhere('name', 'John')  -> get();

برای درج رکورد در دیتابیس از کلاس insert استفاده میکنیم.

DB::table('users') -> insert (
  array('email' => 'john@example.com', 'votes' => 0)
);

اگر بخواهید چندین رکورد را درج کنید، باید از آرایه استفاده کنید.

DB::table('users') -> insert(array(
  array('email' => 'taylor@example.com', 'votes' => 0),
  array('email' => 'dayle@example.com', 'votes' => 0),
));

با استفاده از کلاس update میتوانید عملیات update را در دیتابیس انجام دهید.

DB::table('users') -> where('id', 1) -> update(array(
  'votes' => 1,
  'name' => 'foo',
));

همچنین توسط کلاس delete نیز میتوانید رکوردها را حذف کنید. برای مثال در کد زیر تمام رکوردهای جدول users حذف خواهند شد.

DB::table('users')->delete();

برای اطلاعات کاملتر میتوانید به اسناد سایت Laravel مراجعه کنید.

اما کار ما با دیتابیس در Laravel هنوز تمام نشده است. مهمترین مبحث در دیتابیس در فریم ورک لاراول، مبحث Eloquent ORM است که در مطلب بعدی با آن آشنا میشویم.

این مطلب از سری مطالب، آموزش فریم ورک Laravel است
  • محمد تقوی می‌گه:

    سلام جناب شفیعی ، وقت بخیر .

    یه راهنمایی در مورد join کردن درون لاراول میخواستم .
    متاسفانه از نمونه ای که سایت لاراول گذاشته چیزی دستگیرم نشد !

    فرض کنید ما 2 جدول داریم ( users , posts ) ، درون جدول posts این فیلدهارو داریم :
    id , title , author_id , text

    تو جدول users هم این فیلدهارو داریم :
    id , fname , lname , email , password

    من برای کنترلر posts/index میخوام رکوردهای جدول posts رو نمایش بدم و بجای author_id میخوام fname و lname رو نمایش بدم .

    این کار درون لاراول چطور انجام میشه ؟

    متشکرم .


  • نظرات این مطلب بسته است.