object یا اشیاء دسترسی به داده ها در فریمورک Yii
برای اجرای یک SQL query باید مراحل زیر را طی کنید :
- یک yii\db\Command را با یک SQL query ایجاد کنید.
 - parameterها را bind کنید (الزامی نیست)
 - فرمان را اجرا کنید
 
مرحله 1 - یک تابع به نام actionTestDb در SiteController ایجاد کنید.
public function actionTestDb(){
   // return a set of rows. each row is an associative array of column names and values.
   // an empty array is returned if the query returned no results
   $users = Yii::$app->db->createCommand('SELECT * FROM user LIMIT 5')
      ->queryAll();
   var_dump($users);
   // return a single row (the first row)
   // false is returned if the query has no result
   $user = Yii::$app->db->createCommand('SELECT * FROM user WHERE id=1')
      ->queryOne();
   var_dump($user);
   // return a single column (the first column)
   // an empty array is returned if the query returned no results
   $userName = Yii::$app->db->createCommand('SELECT name FROM user')
      ->queryColumn();
   var_dump($userName);
   // return a scalar value
   // false is returned if the query has no result
   $count = Yii::$app->db->createCommand('SELECT COUNT(*) FROM user')
      ->queryScalar();
   var_dump($count);
}
مثال بالا راه های مختلفی برای استخراج اطلاعات از یک DB را نشان می دهد.
مرحله 2 - به آدرس http://localhost:8080/index.php?r=site/test-db بروید، آنچه که مشاهده می کنید مطابق با تصویر زیر می باشد.
![]()
یک فرمان SQL ایجاد کنید
برای ساخت دستورات SQL با استفاده از parameterها، همیشه باید از رویکرد bind کردن parameter ها برای جلوگیری از حملات SQL injection استفاده کنید.
مرحله 1 - متد actionTestDb را به شکل زیر ویرایش کنید.
public function actionTestDb() {
   $firstUser = Yii::$app->db->createCommand('SELECT * FROM user WHERE id = :id')
      ->bindValue(':id', 1)
      ->queryOne();
   var_dump($firstUser);
   $params = [':id' => 2, ':name' => 'User2'];
   $secondUser = Yii::$app->db->createCommand('SELECT * FROM user WHERE
      id = :id AND name = :name')
      ->bindValues($params)
      ->queryOne();
   var_dump($secondUser);
      //another approach
   $params = [':id' => 3, ':name' => 'User3'];
   $thirdUser = Yii::$app->db->createCommand('SELECT * FROM user WHERE
      id = :id AND name = :name', $params)
      ->queryOne();
   var_dump($thirdUser);
}
در کد بالا :
bindValue() - یک parameter value را bind می کند.
bindValues() - چندین parameter value را bind می کند.
مرحله 2 - اگر در مرورگر وب تان به آدرس http://localhost:8080/index.php?r=site/test-db بروید، آنچه که مشاهده می کنید مطابق با تصویر زیر خواهد بود.
![]()
Query های INSERT, UPDATE , DELETE
برای نوشتن query های INSERT، UPDATE و DELETE می توانید از متدهای insert(), update(),delete() استفاده کنید.
مرحله 1 - متد actionTestDb را به صورت زیر ویرایش کنید.
public function actionTestDb() {
   public function actionTestDb(){
      // INSERT (table name, column values)
      Yii::$app->db->createCommand()->insert('user', [
         'name' => 'My New User',
         'email' => 'mynewuser@gmail.com',
      ])->execute();
      $user = Yii::$app->db->createCommand('SELECT * FROM user WHERE name = :name')
         ->bindValue(':name', 'My New User')
         ->queryOne();
      var_dump($user);
      // UPDATE (table name, column values, condition)
      Yii::$app->db->createCommand()->update('user', ['name' => 'My New User
         Updated'], 'name = "My New User"')->execute();
      $user = Yii::$app->db->createCommand('SELECT * FROM user WHERE name = :name')
         ->bindValue(':name', 'My New User Updated')
         ->queryOne();
      var_dump($user);
      // DELETE (table name, condition)
      Yii::$app->db->createCommand()->delete('user', 'name = "My New User
         Updated"')->execute();
      $user = Yii::$app->db->createCommand('SELECT * FROM user WHERE name = :name')
         ->bindValue(':name', 'My New User Updated')
         ->queryOne();
      var_dump($user);
   }
}
مرحله 2 – در مرورگر وب تان آدرس http://localhost:8080/index.php?r=site/test-db را تایپ کنید.آنچه که مشاهده می کنید مطابق با تصویر زیر می باشد.
![]()
این فصل در یک نگاه:
…
سلام . پیشنهاد میکنم حتما دموی دوره رو مشاهده کنید درباره فریم ورک Yii: در پاسخ به سوالات : آیا این فریم ورک سریع است؟ آیا این یک فریم ورک امن است؟ آیا این یک فریم ورک حرفه ای است؟ آیا ا…این فصل در یک نگاه:
…
پیشنهاد میکنیم دمو دوره رو حتما مشاهده کنید با سلام خدمت دوستان عزیز . ابتدا عرض کنم که این دوره برای دوستانی آماده شده که میخوان وب اپلیکیشن های مدرنی رو طراحی بکنن و وارد بازار کار ط…
                        
            
				 
            
