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

آموزش کوئری مدل ها (Active Query) در yii2

سلام دوستان ، امیدوارم حالتون خوب باشد ،در این آموزش قرار است مروری بر مدل کوئری فریم ورک yii2 داشته باشم و با بخش های مختلف آن اشنا شویم .

در آموزش قبلی تعدادی از دوستان با من در ارتباط بودند و خواستند که آموزش بخش مدل کوئری yii2 را براتون قرار بدهم .

برای شروع کار نیاز به یک مدل داریم !

باید اول یک دیتابیس بسازیم و دیتابیس را به yii2 متصل کنیم سپس در Gii یک مدل برای جدول مد نظرمان میسازیم و حتما تیک Generate ActiveQuery را فعال میکنیم .

gii برای ما یک کلاس دیگر نیز میسازد که آخر نام آن Query اضافه شده است .

خوب حالا به ترتیب توابع رو با مثال شرح میدهم .

find()

این تابع یک ورودی دارد که بر اساس آن یک ریکورد را از جدول به ما بر میگرداند ، این کوئری بر اساس Primary key ما در جدول مد نظر است که معمولا ما id را primary key قرار میدهیم . برای مثال اگر ورودی را ۱ قرار دهیم کاربری را که شناسه ۱ دارد را بر میگرداند ( مدل ) :

select()

این تابع نا محدود ورودی دارد که ورودی های ما در اصل نام فیلد هستند که میخواهیم آن ها را دریافت کنیم .

all()

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

one()

این تابع اولین خروجی کوئری ما را بر میگرداند . برای مثال اگر کوئری ما ۱۰ تا کاربر را برگرداند این تابع اولین آن ها را انتخاب میکند و بر میگرداند . برای مثال :

where()

همان طور که از اسمش معلوم هست این تابع برای اضافه کردن شرط اضافه میشود که حالت های مختلفی دارد :

حالت اول آن هست که خود کوئری را مستفیم وارد کنیم سپس در یک آرایه bind ها را بدهیم .

حالت دوم آن است که یک آرایه بدهیم که key آن نام فیلد و value آن مقدار مد نظر ما میباشد .

حالت سوم برای ایجاد OR و AND استفاده از orWhere و andWhere است .

خروجی کوئری ما به شکل زیر است :

orderBy()

از این تابع برای تایین کوئری ORDER BY استفاده میشود که به ۲ روش ثبت میشود .

روش اول فقط نام فیلد مد نظرمان را به تابع میدهیم ( حالت ASC است )

حالت دوم آن است یک آرایه بدهیم که key آرایه نام فیلد و value آن کد نوع هست SORT_ASC و SORT_DESC برای مثال :

خروجی کد بالا :

count()

این تابع تعداد ریکورد های دریافتی را می شمارد :

asArray()

این تابع خروجی ها را به Array تبدیل میکند . همان طور که میدانید خروجی ها در صورت عدم استفاده از این تابع به صورت مدل هست .

limit()

این تابع برای ثبت LIMIT استفاده میشود .

offset()

این تابع برای ثبتOFFSET برای LIMIT استفاده میشود .

خروجی بالا :

استفاده از LIMIT و Pagination با هم

برای این کار شما نیاز دارید اول pagination را تعریف کنید سپس فقط کافی است مقدار LIMIT و OFFSET را با توجه به Pagination تعریف کنید .

در ادامه میتوانید خروجی HTML  برای Pagination را نمایش دهید .

استقاده از شرط LIKE در where

برای این کار میتوانید از روش اول که از where اشاره شد ( وارد کردن مستقیم کوئری ) استفاده کنید یا به شکل زیر تغییرات را انجام دهید :

خروجی ها

استقاده از شرط IN در where

کار بسیار راحت است ! از اول دوم ساخت where استفاده میکنیم فقط به جای یک String یک آرایه از String میدهیم  :

خروجی :

یک روش دیگر هم هست که میتوانید IN یا NOT IN را خودتان تعریف کنید که مانند روش LIKE هست :

استفاده از BETWEEN در کوئری شرط

برای اینکار کوئری را مانند حالت اول where وارد میکنیم :

addParams()

شاید شما یک کوئری نوشته باشید که یک سری پارامتر داشته باشد ، با استفاده از این تابع و با وارد کردن یک آرایه با key نام پارامتر و value مقدار پارامتر ، میتوانید پارامتر ها را ثبت کنید :

استفاده از چند شرط برای ساخت چند شرط

خروجی :

توجه کنید که همچنین میتوانید از where() چندین بار استفاده کنید .

findBySql

راحت ترین روش برای سلکت کردن با استفاده از وارد کردن یک کوئری 🙂

شاید بپرسید DELETE , UPDATE , INSERT چه شدند ؟

کار بسیار راحت است ! برای update باید اول با استفاده از روش های بالا یک مدل را دریافت کنید ، مقایر را عوض کنید و سپس از save() استفاده کنید :

برای ایجاد کردن یک ریکورد جدید باید یک بار مدل را صدا بزنید سپس مقایر را وارد کنید و save() کنید :

برای حذف کردن هم میتوانید ابتدا مانند update یک ریکورد را دریافت کنید و سپس از delete() استفاده کنید .

 

بر چسب های پست : , , , , , , ,
مطالب مرتبط
سلام دوستان امیدوارم حالتون خوب باشد . در این قسمت قرار است سیستم رو تموم کنیم ( ...
۱۰ مهر ۹۴
2 دیدگاه
سلام دوستان با یک آموزش توپ در خدمت شما هستم . در این آموزش قرار ما یک سیستم آگه ...
۳۰ شهریور ۹۴
6 دیدگاه
سلام دوستان ، امیدوارم حالتون خوب باشد . فریم ورک ها یکی از مهم ترین بخش های برن ...
۲۸ شهریور ۹۴
2 دیدگاه

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

ورود به حساب کاربری
بستن این پنجره