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

Query Builder ها در فریمورک Yii


Query builder ها در ساخت Query در SQL به شما کمک می کنند. Query builder کمک می کند تا کدهای مربوط به SQL را با خوانایی بیشتری بنویسید.

برای استفاده از Query builder، شما باید این مراحل را طی کنید:

  • یک شی yii\db\Query بسازید.
  • متد query را اجرا کنید.

برای ساخت شی yii\db\Query، می توانید با استفاده از توابع مختلفِ query builder، بخش های مختلف یک SQL query، را تعریف نمایید.

مرحله 1 - برای اینکه یک استفاده معمولی از query builder را نشان دهیم، متدactionTestDb  را به شکل زیر ویرایش نمودیم.

public function actionTestDb() {
   //generates "SELECT id, name, email FROM user WHERE name = 'User10';"
   $user = (new \yii\db\Query())
      ->select(['id', 'name', 'email'])
      ->from('user')
      ->where(['name' => 'User10'])
      ->one();
   var_dump($user);
}

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

تابع Where()

تابع where() قسمت WHERE یک query را تعریف می کند. برای تعریف شرط WHERE، می توانید از سه فرمت استفاده کنید:

  • string فرمت − 'name = User10'
  • hash فرمت − ['name' => 'User10', 'email => user10@gmail.com']
  • operator فرمت − ['like', 'name', 'User']

مثالی برای فرمت String

public function actionTestDb() {
   $user = (new \yii\db\Query())
      ->select(['id', 'name', 'email'])
      ->from('user')
      ->where('name = :name', [':name' => 'User11'])
      ->one();
   var_dump($user);
}

 

خروجی مطابق با تصویر زیر خواهد بود :

مثالی برای فرمت Hash

public function actionTestDb() {
   $user = (new \yii\db\Query())
      ->select(['id', 'name', 'email'])
      ->from('user')
      ->where([
         'name' => 'User5',
         'email' => 'user5@gmail.com'
      ])
      ->one();
   var_dump($user);
}

خروجی مطابق با تصویر زیر خواهد بود :

فرمت Operator به شما اجازه می دهد تا شرط های دلخواه تان را در فرمت های زیر تعریف نمایید:

[operator, operand1, operand2]

Operator یا عملگر می تواند موارد زیر باشد :

  • And

-  ['and', 'id = 1', 'id = 2'] تولید می کند id = 1 AND id = 2 or: چیزی شبیه به اپراتور and

 

  • Between

- ['between', 'id', 1, 15] تولید می کند id BETWEEN 1 AND 15

 

  • not between

-  شبیه به اپراتور between می باشد با این تفاوت که برعکس آن عمل می کند.

 

  • In

-  ['in', 'id', [5,10,15]] تولید می کند id IN (5,10,15)

 

  • not in

-  شبیه به اپراتور in می باشد با این تفاوت که برعکس آن عمل می کند.

 

  • Like

- ['like', 'name', 'user'] تولید می کند name LIKE '%user%'

 

  • or like

-  شبیه اپراتور like هست, اما OR برای تقسیم محدوده های LIKE استفاده می شود

 

  • not like

-  شبیه به اپراتور like می باشد با این تفاوت که برعکس آن عمل می کند.

 

  • or not like

-  شبیه به اپراتور not like می باشد اما از or نیز برای ترکیب عملوندهای not like  استفاده می شود.

 

  • exists

-  به یک عملوند که نمونه ای از کلاس yii\db\Query می باشد نیاز دارد.

 

  • not exists

-  شبیه به اپراتور exists می باشد با این تفاوت که برعکس آن عمل می کند و یک عبارت (subquery)NOT EXISTS تولید می کند.

 

  • <, <=, >, >=

یا هرعملگر دیگر: ['<', 'id', 10] تولید می کند id<10

مثالی برای فرمت Operator

public function actionTestDb() {
   $users = (new \yii\db\Query())
      ->select(['id', 'name', 'email'])
      ->from('user')
      ->where(['between', 'id', 5, 7])
      ->all();
   var_dump($users);
}

خروجی مطابق با تصویر زیر خواهد بود :

تابع groupBy()

تابع groupBy() قسمت GROUP BY را تعریف می کند، در حالی که متد having() قسمت HAVING را تعریف می کند.

مثال :

public function actionTestDb() {
   $users = (new \yii\db\Query())
      ->select(['id', 'name', 'email'])
      ->from('user')
      ->groupBy('name')
      ->having('id < 5')
      ->all();
   var_dump($users);
}

خروجی مطابق با تصویر زیر خواهد بود :

متدهای limit() و offset() قسمت های LIMIT وOFFSET  دستورات SQL را تعریف می کنند.

مثال :

public function actionTestDb() {
   $users = (new \yii\db\Query())
      ->select(['id', 'name', 'email'])
      ->from('user')
      ->limit(5)
      ->offset(5)
      ->all();
   var_dump($users);
}

خروجی مطابق با تصویر زیر خواهد بود :

کلاس yii\db\Query مجموعه ای از متدهای مختلف را برای اهداف مختلفی فراهم می کند.

  •  - all() آرایه ای از ردیف ها را به صورت جفت های name-value برمیگرداند.
  • one()  - اولین ردیف را بر می گرداند.
  • column() – اولین ستون را بر می گرداند.
  • scalar()  - یک مقدار عددی از ردیف اول وستون اول را به عنوان نتیجه  برمی گرداند.
  • exists()-  مقداری را برمی گرداند که نشان می دهد آیا  query دارای نتیجه بوده است یا خیر.
  • count()- تعداد رکوردهای نتیجه یک query را برمی گرداند.
  • other aggregation query methods  - شامل متدهایی مانند sum($q), average($q), max($q), min($q) می باشد، که پارامتر $q می تواند نام یک ستون یا DB باشد.

 

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

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

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

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

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

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

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

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

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