مشاوره رایگان
دریافت لینک های دانلود دریافت پستی درب منزل مبلغ کل: تومان
جهت دریافت کد تخفیف به کانال تلگرام مراجعه و یا با پشتیبان آنلاین هماهنگ نمایید

Active Record در فریمورک Yii


Active Record برای دسترسی به داده ها، یک API شی گرا را فراهم می کند. هر کلاس  Active Recordبا یک جدول پایگاه داده مرتبط است.

در فریمورک Yii پایگاه داده های زیر از  Active Record پشتیبانی می کنند:

•    MySQL 4.1 or later

•    SQLite 2 and 3:

•    PostgreSQL 7.3 or later

•    Microsoft SQL Server 2008 or later

•    CUBRID 9.3 or later

•    Oracle

•    ElasticSearch

•    Sphinx

علاوه بر این، کلاس  Active Recordاز پایگاه داده های NoSQL زیر، نیز پشتیبانی می کند:

  • Redis 2.6.12 or later
  • MongoDB 1.3.0 or later

پس ازمعرفی  کلاس Active Record (در مثال ما، مدل MyUser) به طور جداگانه، برای هر جدول از پایگاه داده، باید مراحل زیر را برای query زدن روی داده ها انجام دهید :

  • با استفاده از متد yii\db\ActiveRecord::find() یک شیء query جدید ایجاد کنید.
  • شیء query را بسازید.
  • با استفاده از یک متد query داده ها را بازیابی کنید.

مرحله 1 – متد actionTestDb() را به شکل زیر ویرایش کنید.

public function actionTestDb() {
   // return a single user whose ID is 1
   // SELECT * FROM `user` WHERE `id` = 1
   $user = MyUser::find()
      ->where(['id' => 1])
      ->one();
   var_dump($user);
   // return the number of users
   // SELECT COUNT(*) FROM `user`
   $users = MyUser::find()
      ->count();
   var_dump($users);
   // return all users and order them by their IDs
   // SELECT * FROM `user` ORDER BY `id`
   $users = MyUser::find()
      ->orderBy('id')
      ->all();
   var_dump($users);
}

کد بالا چگونگی استفاده از ActiveQuery برای query زدن روی داده ها را نشان می دهد.

مرحله 2 – در آدرسبار مرورگر وب تان به http://localhost:8080/index.php?r=site/test-db بروید، آنچه که مشاهده خواهید کرد مطابق با تصویر زیر می باشد.

Query زدن با مقادیر کلیدهای اصلی (primary key) یا مجموعه ای از مقادیر ستون ها، زیاد مورد استفاده قرار می گیرد، به همین برای راحتی کار فریمورک Yii متد های زیر را فراهم کرده است :

yii\db\ActiveRecord::findOne() - یک شی Active Record را برمی گرداند.

 yii\db\ActiveRecord::findAll() - آرایه ای از اشیا Active Record را برمی گرداند.

مثال :

public function actionTestDb() {
   // returns a single customer whose ID is 1
   // SELECT * FROM `user` WHERE `id` = 1
   $user = MyUser::findOne(1);
   var_dump($user);
   // returns customers whose ID is 1,2,3, or 4
   // SELECT * FROM `user` WHERE `id` IN (1,2,3,4)
   $users = MyUser::findAll([1, 2, 3, 4]);
   var_dump($users);
   // returns a user whose ID is 5
   // SELECT * FROM `user` WHERE `id` = 5
   $user = MyUser::findOne([
      'id' => 5
   ]);
   var_dump($user);
}

ذخیره اطلاعات در Database

برای ذخیره داده ها در پایگاه داده، متد yii\db\ActiveRecord::save() را فراخوانی نمایید.

مرحله 1 - متد actionTestDb() را به صورت زیر ویرایش نمایید.

public function actionTestDb() {
   // insert a new row of data
   $user = new MyUser();
   $user->name = 'MyCustomUser2';
   $user->email = 'mycustomuser@gmail.com';
   $user->save();
   var_dump($user->attributes);
   
   // update an existing row of data
   $user = MyUser::findOne(['name' => 'MyCustomUser2']);
   $user->email = 'newemail@gmail.com';
   $user->save();
   var_dump($user->attributes);
}

مرحله 2 – در آدرسبار مرورگر وب تان به http://localhost:8080/index.php?r=site/test-db بروید، آنچه که مشاهده خواهید کرد مطابق با تصویر زیر می باشد.

برای حذف یک ردیف از داده ها، باید :

•    شی Active Record را بازیابی کنید.

•    متد yii\db\ActiveRecord::delete() را فراخوانی کنید.

مرحله 1 - متد actionTestDb() را مطابق با کدهای زیر ویرایش کنید.

public function actionTestDb() {
   $user = MyUser::findOne(2);
   if($user->delete()) {
      echo "deleted";
   } 
}

مرحله 2 – در آدرسبار مرورگر وب تان به http://localhost:8080/index.php?r=site/test-db بروید، آنچه که مشاهده خواهید کرد مطابق با تصویر زیر می باشد.

مرحله 3 – برای حذف چندین ردیف از داده ها متد yii\db\ActiveRecord::deleteAll() را فراخوانی نمایید. به مثال زیر توجه نمایید.

public function actionTestDb() {
    MyUser::deleteAll('id >= 20');
}

 

فصلِ: 14 , تعداد قسمت ها: 188 , سطح: صفر تا صد

این فصل در یک نگاه:

سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…
فصلِ: 8 , تعداد قسمت ها: 77 , سطح: صفر تا صد

این فصل در یک نگاه:

  پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…

تولید شده توسط کلیک سایت

پشتیبانی آنلاین
آماده پاسخگویی هستیم
انتخاب تصویر جهت ارسال:
در حال ضبط صدا

(جهت توقف و یا لغو ضبط از دکمه های زیر استفاده کنید)

توقف و ارسال :
لغو ضبط
در حال حاضر تمامی کارشناسان آفلاین هستند. همواره می توانید با شماره تلگرام / واتساپ 09010005000 به صورت آنلاین با ما در ارتباط باشید. جهت ورود به واتساپ کلیک کنید
0 پیام جدید
پشتیبان در حال تایپ ...
ارسال تصویر ضبط صدا
0 کارشناسان آنلاین می باشند
این گفت و گو توسط پشتیبان به اتمام رسید