Query Builder در Yii

در فریم ورک Yii برای کار با دیتابیس و اعمال کوئری های خود میتوانیم از ActiveRecord استفاده کنیم
برای مثال :

User::model()->findByPk(1);

راه دیگه برای اعمال کوئری های دلخواه خودمون میتوانیم از Query Builder استفاده کنیم.
دراینجا چند نمونه ی پر کاربرد را همراه با نتیجه ای که خواهد داشت را قرار داده ایم.
createCommand کلاسی است که به ما امکان دسترسی به دیتابیس و اعمال کوئری های خود را میدهد.
با استفاده از این کلاس شما به روش های مختلف میتوانید کوئری بزنید.

۱- queryRow()
برای دریافت یک سطر از نتیجه ی کوئری استفاده میشود.
برای عمل select استفاده می شود

$user = Yii::app()->db->createCommand()
->select('*')
->from('user')
->where('id=:id', array(':id' => 8))
->queryRow();

نتیجه :

Array
(
[id] => 8
[email] => amirajlo@yahoo.com
[password] => amQhZiLmR7u3c
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => 1450122223.jpg
)

۲-queryAll()
همانند کد بالا با این تفاوت که تمام سطر های نتیجه را برمیگرداند

$users = Yii::app()->db->createCommand()
->select('*')
->from('user')
->queryAll();

نتیجه:


Array
(
[۰] => Array
(
[id] => 3
[email] => info@goyii.ir
[password] => inbPLRNe.XTOI
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] =>
)
[۱] => Array
(
[id] => 8
[email] => amirajlo@yahoo.com
[password] => amQhZiLmR7u3c
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => 1450122223.jpg
)
[۲] => Array
(
[id] => 9
[email] => a@a.a
[password] => 123456
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => a.jpg
)
[۳] => Array
(
[id] => 10
[email] => a@a.a
[password] => 123456
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => a.jpg
)
[۴] => Array
(
[id] => 11
[email] => a@a.a
[password] => 123456
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => a.jpg
)
[۵] => Array
(
[id] => 12
[email] => a@a.a
[password] => 123456
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => a.jpg
)
[۶] => Array
(
[id] => 13
[email] => a@a.a
[password] => 123456
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => a.jpg
)
[۷] => Array
(
[id] => 14
[email] => a@a.a
[password] => 123456
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => a.jpg
)
[۸] => Array
(
[id] => 15
[email] => a@a.a
[password] => 123456
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => a.jpg
)
[۹] => Array
(
[id] => 16
[email] => a@a.a
[password] => 123456
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => a.jpg
)
[۱۰] => Array
(
[id] => 17
[email] => a@a.a
[password] => 123456
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => a.jpg
)
[۱۱] => Array
(
[id] => 18
[email] => a@a.a
[password] => 123456
[first_name] => امیر
[last_name] => عاجلو
[status] => 1
[path] => a.jpg
)
)

۳-update()
برای به روز رسانی اطلاعات
که شامل چند پارامتر اجباری و اختیاری میباشد
به این صورت که :
پارامتر اول : به صورت رشته (string) نام جدول مورد نظر شما
پارامتر دوم:به صورت آرایه (Array) که ابتدا نام ستون و سپس مقدار مورد نظر
پارامتر سوم:شروط کوئری ماست
پارامتر چهارم:بایند کردن پارامتر هایی است که استفاده شده است

$update = Yii::app()->db->createCommand()
->update('user', array('first_name' => 'امیر', 'last_name' => 'عاجلو'), 'id >:id', array(':id' => 1));

نتیجه تعداد رکوردی است که ویرایش شده است. صفر به معنی این است که رکوردی ویرایش نشده است

۴- execute()
دستور اجرای کوئری ما می باشد
برای insert ,update,delete استفاده می شود .

$sql = "INSERT INTO user(email,password,first_name,last_name,status,path) VALUES "
. "('a@a.a','123456','a','b',1,'a.jpg'),"
. "('a@a.a','123456','a','b',1,'a.jpg'),"
. "('a@a.a','123456','a','b',1,'a.jpg');";
$execute = Yii::app()->db->createCommand($sql)->execute();

نتیجه :
همانند update تعداد رکوردی که انجام شده است را بر می گرداند
۵-queryScalar()
برای نمایش تعداد استفاده می شود
مثل count

$queryScalar = Yii::app()->db->createCommand()
->select("id")
->from("user")
->where('id >:id', array(':id' => 8))
->queryScalar();

نتیجه یک عدد است
۶-queryColumn()
نمایش اولین ستون از اولین سطر


$queryColumn = Yii::app()->db->createCommand('select * from user')
->queryColumn();

نتیجه :
ستون id است

دیدگاهتان را بنویسید

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