rezaonline.net
دوشنبه 27 آذر 1391, 04:30 صبح
کوئری بیلدر ها در Yii
چنانچه نخواید از Active record فریم ورک Yii استفاده کنید ، کوئری بیلدرها به کارتون میاد .
استفاده از این شیوه سرعت کدنویسی شما رو پایین میآورد ولی در نهایت سرعت اجرای برنامه بیشتر خواهد بود .
دستورSELECT
Yii::app()->db->createCommand()
->select('*')
->from('tbl')
->where('id=:id',array(':id'=>$_GET['id']))
->queryAll();
همه چیز واضح هست فقط چنانچه نیاز داشتید چند ستون دلخواه را واکشی کنید توی متد select اونها رو بنویسید بصورت
select('id , title , content')
نحوه استفاده از where هم کاملاً معلوم هست .(مثل PDO)
اما انواع مختلفش رو از کتاب Yii Guide
// WHERE id=1 or id=2
where(’id=1 or id=2’)
// WHERE id=:id1 or id=:id2
where(’id=:id1 or id=:id2’, array(’:id1’=>1, ’:id2’=>2))
// WHERE id=1 OR id=2
where(array(’or’, ’id=1’, ’id=2’))
// WHERE id=1 AND (type=2 OR type=3)
where(array(’and’, ’id=1’, array(’or’, ’type=2’, ’type=3’)))
// WHERE ‘id‘ IN (1, 2)
where(array(’in’, ’id’, array(1, 2))
// WHERE ‘id‘ NOT IN (1, 2)
where(array(’not in’, ’id’, array(1,2)))
// WHERE ‘name‘ LIKE ’%Qiang%’
where(array(’like’, ’name’, ’%Qiang%’))
// WHERE ‘name‘ LIKE ’%Qiang’ AND ‘name‘ LIKE ’%Xue’
where(array(’like’, ’name’, array(’%Qiang’, ’%Xue’)))
// WHERE ‘name‘ LIKE ’%Qiang’ OR ‘name‘ LIKE ’%Xue’
where(array(’or like’, ’name’, array(’%Qiang’, ’%Xue’)))
// WHERE ‘name‘ NOT LIKE ’%Qiang%’
where(array(’not like’, ’name’, ’%Qiang%’))
// WHERE ‘name‘ NOT LIKE ’%Qiang%’ OR ‘name‘ NOT LIKE ’%Xue%’
where(array(’or not like’, ’name’, array(’%Qiang%’, ’%Xue%’)))
برای واکشی اطلاعات نهایی میتوانید از متد queryAll استفاده کنید چنانچه نیاز به واکشی یک سطر داشتید از متد queryRow استفاده کنید .
چنانچه نیاز داشتید فقط اولین مقدار اولین ستون رو واکشی کنید از queryScalar استفاده کنید
یک مثال :
$count = Yii::app()->db->createCommand()
->select('count(id)')
->from('post')
->queryScalar();
update
برای آپدیت کردن یک سطر از متد update استفاده میشود .
مثال
$rowAffected = Yii::app()->db->createCommand()
->update('post',array(
'title'=> $_POST['title'] ,
'content'=>$_POST['content'] ,
),'id=:id',array(':id'=>$_POST['id']));
مقدار بازگشتی تعداد رکوردهای تغییر کرده هست .
Insert
برای ساخت رکورد جدید
Yii::app()->db->createCommand()
->insert('post' , array(
'title'=>$_POST['title'] ,
'content'=>$_POST['content'],
));
delete
برای حذف رکورد
مقدار بازگشتی تعداد رکوردهای تغییر کرده
Yii::app()->db->createCommand()
->delete('post','id=:id',array(':id'=>$_POST['id']));
مقدمهای کوتاه بود تا بتونید عملیاتCRUD رو روی دیتابیس با استفاده از کوئری بیلدر فریم ورک Yii انجام بدید .
پ ن : کدها رو سریع نوشتم تست کنید اگه مشکلی داشت بگید .
انشاالله جلسات بعد مطالب پر بارتر
چنانچه نخواید از Active record فریم ورک Yii استفاده کنید ، کوئری بیلدرها به کارتون میاد .
استفاده از این شیوه سرعت کدنویسی شما رو پایین میآورد ولی در نهایت سرعت اجرای برنامه بیشتر خواهد بود .
دستورSELECT
Yii::app()->db->createCommand()
->select('*')
->from('tbl')
->where('id=:id',array(':id'=>$_GET['id']))
->queryAll();
همه چیز واضح هست فقط چنانچه نیاز داشتید چند ستون دلخواه را واکشی کنید توی متد select اونها رو بنویسید بصورت
select('id , title , content')
نحوه استفاده از where هم کاملاً معلوم هست .(مثل PDO)
اما انواع مختلفش رو از کتاب Yii Guide
// WHERE id=1 or id=2
where(’id=1 or id=2’)
// WHERE id=:id1 or id=:id2
where(’id=:id1 or id=:id2’, array(’:id1’=>1, ’:id2’=>2))
// WHERE id=1 OR id=2
where(array(’or’, ’id=1’, ’id=2’))
// WHERE id=1 AND (type=2 OR type=3)
where(array(’and’, ’id=1’, array(’or’, ’type=2’, ’type=3’)))
// WHERE ‘id‘ IN (1, 2)
where(array(’in’, ’id’, array(1, 2))
// WHERE ‘id‘ NOT IN (1, 2)
where(array(’not in’, ’id’, array(1,2)))
// WHERE ‘name‘ LIKE ’%Qiang%’
where(array(’like’, ’name’, ’%Qiang%’))
// WHERE ‘name‘ LIKE ’%Qiang’ AND ‘name‘ LIKE ’%Xue’
where(array(’like’, ’name’, array(’%Qiang’, ’%Xue’)))
// WHERE ‘name‘ LIKE ’%Qiang’ OR ‘name‘ LIKE ’%Xue’
where(array(’or like’, ’name’, array(’%Qiang’, ’%Xue’)))
// WHERE ‘name‘ NOT LIKE ’%Qiang%’
where(array(’not like’, ’name’, ’%Qiang%’))
// WHERE ‘name‘ NOT LIKE ’%Qiang%’ OR ‘name‘ NOT LIKE ’%Xue%’
where(array(’or not like’, ’name’, array(’%Qiang%’, ’%Xue%’)))
برای واکشی اطلاعات نهایی میتوانید از متد queryAll استفاده کنید چنانچه نیاز به واکشی یک سطر داشتید از متد queryRow استفاده کنید .
چنانچه نیاز داشتید فقط اولین مقدار اولین ستون رو واکشی کنید از queryScalar استفاده کنید
یک مثال :
$count = Yii::app()->db->createCommand()
->select('count(id)')
->from('post')
->queryScalar();
update
برای آپدیت کردن یک سطر از متد update استفاده میشود .
مثال
$rowAffected = Yii::app()->db->createCommand()
->update('post',array(
'title'=> $_POST['title'] ,
'content'=>$_POST['content'] ,
),'id=:id',array(':id'=>$_POST['id']));
مقدار بازگشتی تعداد رکوردهای تغییر کرده هست .
Insert
برای ساخت رکورد جدید
Yii::app()->db->createCommand()
->insert('post' , array(
'title'=>$_POST['title'] ,
'content'=>$_POST['content'],
));
delete
برای حذف رکورد
مقدار بازگشتی تعداد رکوردهای تغییر کرده
Yii::app()->db->createCommand()
->delete('post','id=:id',array(':id'=>$_POST['id']));
مقدمهای کوتاه بود تا بتونید عملیاتCRUD رو روی دیتابیس با استفاده از کوئری بیلدر فریم ورک Yii انجام بدید .
پ ن : کدها رو سریع نوشتم تست کنید اگه مشکلی داشت بگید .
انشاالله جلسات بعد مطالب پر بارتر