تخفیفات ویژه بهار ۱۳۹۹ تاپایان: جمعه ۹ خرداد ۱۳۹۹
بزن بریم فروشگاه

درس 15 - کار با پایگاه داده در لاراول

آموزش کار با پایگاه داده در فریمورک لاراول

آموزش کار کردن با دیتابیس یا پایگاه داده در فریمورک لاراول

فریمورک لاراول کار با پایگاه داده را بسیار آسانتر میکند. در حال حاضر لاراول از 4 پایگاه داده ی زیر بصورت رسمی پشتیبانی میکند.

  • MySQL
  • Postgres
  • SQLite
  • SQL Server

برای نوشتن کوئری پایگاه داده در فریمورک لاراول میتوانید از زبان SQL خام ، از query builder یا Eloquent ORM استفاده کنید.

برای درک بهتر موضوع CRUD یعنی create , read , update و delete در لاراول را در مثالی برای مدیریت دانش آموزان آورده ایم.

 

اتصال به پایگاه داده در فریمورک لاراول

تنظیمات پایگاه داده را در مسیر config/database.php انجام دهید و یک دیتابیس به نام college بسازید که ساختار MySQL آن به شکل تصویر زیر خواهد بود.

نام پایگاه داده : college

نام جدول : student

آموزش کار با پایگاه داده در فریمورک لاراول

بعد از اینکه جدول student ساخته میشود مفاهیم اضافه کردن داده به جدول دیتابیس ، حذف کردن داده از جدول دیتابیس ، ویرایش کردن داده ای در دیتابیس و در نهایت فراخوانی اطلاعات از جدول دیتابیس در لاراول را آموزش خواهیم داد.

پس 4 عملیات گفته شده را بصورت جداگانه در زیر انجام میدهیم و آنها را توضیح میدهیم تا بصورت کامل نحوه ی مدیریت دیتابیس در لاراول را یاد بگیرید.

 

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

برای insert کردن داده ها یا وارد کردن داده های جدید به پایگاه داده در فریمورک لاراول از متود insert مربوط به  DB facade استفاده میشود.

نحوه ی کدنویسی insert کردن داده ها در دیتابیس در زیر آمده است.

سینتکس  bool insert(string $query, array $bindings = array())
پارامترها
  • $query(string)  - کوئری که روی دیتابیس اعمال میشود.
  • $bindings(array) - مقادیری که روی کوئری  bind میشود.
نوع مقدار بازگشتی bool
توضیحات اجرا کردن insert یا افزودن داده ی جدید به پایگاه داده

مثال 

قدم 1 - دستور زیر را در ترمینال اجرا کنید تا یک کنترلر جدید به نام StudInsertController ساخته شود.

php artisan make:controller StudInsertController --plain

قدم 2 - بعد از اجرای موفق دستور بالا نتیجه باید به شکل زیر باشد.

آموزش insert کردن ( وارد کردن ) داده های جدید در پایگاه داده در فریمورک لاراول

قدم 3 - کدهای زیر را در مسیر app/Http/Controllers/StudInsertController.php کپی کنید.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class StudInsertController extends Controller {
   public function insertform() {
      return view('stud_create');
   }
	
   public function insert(Request $request) {
      $name = $request->input('stud_name');
      DB::insert('insert into student (name) values(?)',[$name]);
      echo "Record inserted successfully.<br/>";
      echo '<a href = "/insert">Click Here</a> to go back.';
   }
}

قدم 4 - یک فایل view در بسازید به نام و مسیر resources/views/stud_create.php و کدهای زیر را درون آن کپی کنید.

<html>
   <head>
      <title>Student Management | Add</title>
   </head>

   <body>
      <form action = "/create" method = "post">
         <input type = "hidden" name = "_token" value = "<?php echo csrf_token(); ?>">
         <table>
            <tr>
               <td>Name</td>
               <td><input type='text' name='stud_name' /></td>
            </tr>
            <tr>
               <td colspan = '2'>
                  <input type = 'submit' value = "Add student"/>
               </td>
            </tr>
         </table>
      </form>
      
   </body>
</html>

قدم 5 - فایل route های فریمورک لاراول خود را باز کنید و کدهای زیر را به آن اضافه کنید.

Route::get('insert','StudInsertController@insertform');
Route::post('create','StudInsertController@insert');

قدم 6 - از طریق مرورگر به آدرس url زیر مراجعه کنید تا عمل insert در پایگاه داده انجام شود.

http://localhost:8000/insert

قدم 7 - نتیجه ی نهایی باید مشابه تصویر زیر باشد.

آموزش insert کردن داده ها در فریمورک لاراول

اتمام بخش insert کردن داده ها در دیتابیس فریمورک لاراول

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

بعد از انجام تنظیمات صحیح پایگاه داده در فریمورک لاراول ما میتوانیم توسط  DB facade  و متود select به داده های ذخیره سازی شده در پایگاه داده دسترسی داشته باشیم و آنها را واکشی کنیم.

در جدول زیر تشریح سینتکس استفاده از این متود گفته شده است.

سینتکس array select(string $query, array $bindings = array())
پارامترها
  • $query(string) - کوئری که روی دیتابیس اجرا میشود.
  • $bindings(array) - داده هایی که روی کوئری bind میشود.
نوع بازگشتی array
توضیحات اجرای select روی دیتابیس و بازیابی یک سری اطلاعات

مثال

قدم 1 - دستورات زیر را در کامند پروم و یا ترمینال اجرا کنید تا یک کنترلر به نام StudViewController ساخته شود.

php artisan make:controller StudViewController --plain

قدم 2 - بعد از اجرای دستور مرحله ی یک بصورت موافقیت آمیز باید نتیجه مشابه تصویر زیر باشد.

آموزش بازیابی اطلاعات یا select از پایگاه داده در فریمورک لاراول

قدم 3 - کدهای زیر را به مسیر app/Http/Controllers/StudViewController.php کپی کنید.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class StudViewController extends Controller {
   public function index() {
      $users = DB::select('select * from student');
      return view('stud_view',['users'=>$users]);
   }
}

قدم 4 - یک فایل view بسازید و در مسیر resources/views/stud_view.blade.php قرار گرفته باشد و کدهای زیر را در درون آن کپی کنید.

<html>
   
   <head>
      <title>View Student Records</title>
   </head>
   
   <body>
      <table border = 1>
         <tr>
            <td>ID</td>
            <td>Name</td>
         </tr>
         @foreach ($users as $user)
         <tr>
            <td>{{ $user->id }}</td>
            <td>{{ $user->name }}</td>
         </tr>
         @endforeach
      </table>
   </body>
</html>

قدم 5 - فایل  route های فریمورک لاراول خود را باز کنید و خط زیر را به فایل روت لاراول خود اضافه کنید.

Route::get('view-records','StudViewController@index');

قدم 6 - برای دیدن نتیجه ی کار به url زیر مراجعه کنید.

http://localhost:8000/view-records

قدم 7 - نتیجه باید به شکل تصویر زیر باشد که مشاهده میکنید.

آموزش select کردن داده ها از دیتابیس در فریمورک laravel

اتمام بخش select کردن داده های دیتابیس در فریمورک لاراول

 

Update کردن داده های دیتابیس در فریمورک لاراول

در فریمورک لاراول ما میتوانیم داده ها را بروزرسانی کنیم برای این کار از DB facade و متود update استفاده میکنیم. تشریح سینتکس update کردن داده ها در جدول زیر آمده است.

سینتکس int update(string $query, array $bindings = array())
پارامترها
  • $query(string) - کوئری که روی دیتابیس اعمال میشود.
  • $bindings(array) - مقادیری که روی کوئری bind میشوند.
نوع مقدار بازگشتی int
توضیحات اجرا کردن update روی پایگاه داده

مثال زیر را برای درک موضوع update کردن داده های دیتابیس در نظر بگیرید.

قدم 1 - دستور زیر را در ترمینال یا کامند پرومپ اجرا کنید تا یک کنترلر جدید به نام StudViewController ساخته شود.

php artisan make:controller StudUpdateController --plain

قدم 2 - بعد از اجرا کردن دستور بالا در ترمینال بصورت موفقیت امیز نتیجه باید مشابه تصویر زیر باشد.

آموزش اپدیت کردن داده های پایگاه داده در فریمورک لاراول

قدم 3 - کدهای زیر را کپی کنید و در مسیر فایل app/Http/Controllers/ StudUpdateController.php بنویسید.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class StudUpdateController extends Controller {
   public function index() {
      $users = DB::select('select * from student');
      return view('stud_edit_view',['users'=>$users]);
   }
   public function show($id) {
      $users = DB::select('select * from student where id = ?',[$id]);
      return view('stud_update',['users'=>$users]);
   }
   public function edit(Request $request,$id) {
      $name = $request->input('stud_name');
      DB::update('update student set name = ? where id = ?',[$name,$id]);
      echo "Record updated successfully.<br/>";
      echo '<a href = "/edit-records">Click Here</a> to go back.';
   }
}

قدم 4 - یک فایل view جدید بسازید که در مسیر resources/views/stud_edit_view.blade.php قرار دارد و کدهای زیر را درون آن فایل کپی کنید.

<html>
   <head>
      <title>View Student Records</title>
   </head>
   
   <body>
      
      <table border = "1">
         <tr>
            <td>ID</td>
            <td>Name</td>
            <td>Edit</td>
         </tr>
         @foreach ($users as $user)
         <tr>
            <td>{{ $user->id }}</td>
            <td>{{ $user->name }}</td>
            <td><a href = 'edit/{{ $user->id }}'>Edit</a></td>
         </tr>
         @endforeach
      </table>
   </body>
</html>

قدم 5 - یک فایل view دیگری با نام و مسیر resources/views/stud_update.php بسازید و کدهای زیر را درون آن کپی کنید.

<html>
   
   <head>
      <title>Student Management | Edit</title>
   </head>
   
   <body>
      <form action = "/edit/<?php echo $users[0]->id; ?>" method = "post">
         <input type = "hidden" name = "_token" value = "<?php echo csrf_token(); ?>">
      
         <table>
            <tr>
               <td>Name</td>
               <td>
                  <input type = 'text' name = 'stud_name' 
                     value = '<?php echo$users[0]->name; ?>'/>
               </td>
            </tr>
            <tr>
               <td colspan = '2'>
                  <input type = 'submit' value = "Update student" />
               </td>
            </tr>
         </table>
      </form>
   </body>
</html>

قدم 6 - فایل route  های فریمورک لاراول خود را باز کنید و کدهای زیر را درون آن بنویسید

Route::get('edit-records','StudUpdateController@index');
Route::get('edit/{id}','StudUpdateController@show');
Route::post('edit/{id}','StudUpdateController@edit');

قدم 7 - از طریق مرورگر به مسیر url زیر مراجعه کنید.

http://localhost:8000/edit-records

قدم 8 - نتیجه در مرورگر شما باید به شکل تصویر زیر باشد.

آموزش update کردن داده های پایگاه داده در فریمورک لاراول

قدم 9 - روی لینک Edit هر یک از فیلد های نمایش داده شده در مرورگر کلیک کنید و در این صورت میتوانید آن رکورد خاص را ویرایش کنید.

قدم 10 - بعد از کلیک کردن روی Edit فرمی مشابه تصویر زیر برای شما نمایش داده میشود که یک فرم ویرایش است و بعد از تغییرات روی Update کلیک کنید.

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

قدم 11 - بعد از ادیت شدن داده ها روی دیتابیس در فریمورک لاراول ، نتیجه باید مشابه تصویر زیر باشد.

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

اتمام بخش edit کردن داده های دیتابیس روی فریمورک لاراول

 

delete کردن داده های دیتابیس در فریمورک لاراول

ما میتوانیم داده ها را از پایگاه داده در فریمورک لاراول با استفاده از DB facade و متود delete پاک کنیم. سینتکس کدنویسی delete در جدول زیر آمده است.

سینتکس int delete(string $query, array $bindings = array())
پارامترها
  • $query(string) - کوئری که قرار است روی دیتابیس اجرا شود.
  • $bindings(array) -  مقادیری که روی کوئری bind خواهد شد.
نوع بازگشتی int
توضیحات اجرا کردن کوئری delete یا پاکسازی روی داده های دیتابیس لاراول

مثال زیر را برای delete کردن داده ها در فریمورک لاراول در نظر داشته باشید.

 قدم 1 - دستور زیر را جهت ساختن یک کنترلر جدید به نام StudDeleteController اجرا کنید.

php artisan make:controller StudDeleteController --plain

قدم 2 - بعد از اجرای موفق دستور بالا نتیجه باید مشابه تصویر زیر باشد.

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

قدم 3 - کدهای زیر را کپی کنید و در مسیر app/Http/Controllers/StudDeleteController.php بنویسید.

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class StudDeleteController extends Controller {
   public function index() {
      $users = DB::select('select * from student');
      return view('stud_delete_view',['users'=>$users]);
   }
   public function destroy($id) {
      DB::delete('delete from student where id = ?',[$id]);
      echo "Record deleted successfully.<br/>";
      echo '<a href = "/delete-records">Click Here</a> to go back.';
   }
}

قدم 4 - یک فایل view در مسیر resources/views/stud_delete_view.blade.php بسازید و کدهای زیر را درون آن کپی کنید.

<html>
   
   <head>
      <title>View Student Records</title>
   </head>
   
   <body>
      <table border = "1">
         <tr>
            <td>ID</td>
            <td>Name</td>
            <td>Edit</td>
         </tr>
         @foreach ($users as $user)
         <tr>
            <td>{{ $user->id }}</td>
            <td>{{ $user->name }}</td>
            <td><a href = 'delete/{{ $user->id }}'>Delete</a></td>
         </tr>
         @endforeach
      </table>
   </body>
</html>

قدم 5 - فایل route های فریمورک لاراول خود را باز کنید و کدهای زیر را به آن اضافه کنید.

Route::get('delete-records','StudDeleteController@index');
Route::get('delete/{id}','StudDeleteController@destroy');

قدم 6 - بعد باید به آدرس تعریف شده در route مراجعه کنید که در زیر آمده است.

http://localhost:8000/delete-records

نتیجه در مرورگر باید مشابه تصویر زیر باشد.

آموزش delete کردن داده ها در فریمورک laravel

قدم 7 - بعد از کلیک کردن روی Delete نتیجه باید مشابه تصویر زیر باشد و پیام زیر به شما نمایش داده شود.

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

قدم 8 - در تصویر بالا و نتیجه ی مشاهده شده در مرورگر خود یک لینک به نام Click Here میبینید که اگر روی آن کلیک کنید به لیست ریکورد های دیتابیس برمیگردیم و مورد انتخاب شده از لیست پاکسازی شده است. تصویر زیر را ببینید.

آموزش پاک کردن داده ها در فریمورک لاراول

اتمام