Подсказки по Yii. Глава двенадцатая.
Основы работы с БД на примере Open Real Estate.
- 
findByPk. 
- $id = 25;     
- $result = Apartment::model()->findByPk($id);  
- echo $result->title_ru;  
 
 Результат: Однокомнатная квартира на Новом Арбате   
- 
findAllByPk. 
- $ids = array(25, 26, 27);     
- $result = Apartment::model()->findAllByPk($ids);  
-   
- foreach ($result as $item) {  
-     echo '<pre>';  
-     print_r($item->title_ru);  
-     echo '</pre>';  
- }  
 
 Результат: Однокомнатная квартира на Новом Арбате Квартира, ул. Большая Полянка, д. 28 2 комн. кв. рядом с м. Проспект Мира   
- 
findByAttributes. 
- $result = Apartment::model()->findByAttributes(array('title_ru' => 'Однокомнатная квартира на Новом Арбате'));  
-               
- echo $result->title_ru;  
- echo '<br>'.$result->id;  
 
 Результат: Однокомнатная квартира на Новом Арбате 25   
- 
findAllByAttributes. 
- $result = Apartment::model()->findAllByAttributes(array('title_ru' => array('Однокомнатная квартира на Новом Арбате', 'дом на ул. Трубецкая')));  
-           
- foreach ($result as $item) {  
-     echo '<pre>';  
-     print_r($item->title_ru);  
-     print_r('<br>'.$item->id);  
-     echo '</pre>';  
- }  
 
 Результат: дом на ул. Трубецкая 19 Однокомнатная квартира на Новом Арбате 25 ещё пример: 
- $result = Apartment::model()->findAllByAttributes(array('id' => array(19, 20), 'title_ru' => array('Однокомнатная квартира на Новом Арбате', 'дом на ул. Трубецкая')));  
-           
- foreach ($result as $item) {  
-     echo '<pre>';  
-     print_r($item->title_ru);  
-     print_r('<br>'.$item->id);  
-     echo '</pre>';  
- }  
 
 Результатом такого использования будет:: дом на ул. Трубецкая 19   
- 
find. 
- $numMax = 19;     
- $result = Apartment::model()->find('id < :numMax', array(':numMax' => $numMax));  
-   
- echo $result->title_ru;  
- echo '<br>'.$result->id;  
 
 квартира на ул. Авиамоторная 18   
- 
findAll. 
- $numMax = 20;     
- $result = Apartment::model()->findAll('id < :numMax', array(':numMax' => $numMax));  
-       
- foreach ($result as $item) {  
-     echo '<pre>';  
-     print_r($item->title_ru);  
-     print_r('<br>'.$item->id);  
-     echo '</pre>';  
- }  
 
 или можно так: 
- $numMax = 20;     
- $result = Apartment::model()->findAll("id < {$numMax}");  
-       
- foreach ($result as $item) {  
-     echo '<pre>';  
-     print_r($item->title_ru);  
-     print_r('<br>'.$item->id);  
-     echo '</pre>';  
- }  
 
 Результат: квартира на ул. Авиамоторная 18 дом на ул. Трубецкая 19 Также можно выбрать все элементы, отсортированные по заголовку: 
- $result = Apartment::model()->findAll(array('order' => 'title_ru ASC'));  
 
   
- 
findBySql. 
- $result = Apartment::model()->findBySql('SELECT id FROM {{apartment}} WHERE square = 60 AND title_ru = "квартира на ул. Авиамоторная"');      
- echo $result->id;  
 
 Результат: 18   
- 
findAllBySql. 
- $result = Apartment::model()->findAllBySql('SELECT id, title_ru FROM {{apartment}} WHERE square <= 50 AND square >= 40');  
-               
- foreach ($result as $item) {  
-     echo '<pre>';  
-     print_r($item->title_ru);  
-     print_r('<br>'.$item->id);  
-     echo '</pre>';  
- }  
 
 Результат: Однокомнатная квартира Псковская улица 21 Однокомнатная квартира на Новом Арбате 25   
- 
countBySql. 
- $result = Apartment::model()->countBySql('SELECT COUNT(id) FROM {{apartment}} WHERE square <= 50 AND square >= 40');  
- echo $result;  
 
 Результат: 2   
- 
count. 
- $result = Apartment::model()->count('id < 25');  
- echo $result;  
 
 или: 
- $result = Apartment::model()->count('id < :num', array(':num' => 25));  
- echo $result;  
 
 Результат: 7   
- 
exists. 
- $result = Apartment::model()->exists('id < :num', array(':num' => 25));  
- echo var_dump($result);  
 
 Результат: bool(true) 
- $result = Apartment::model()->exists('id < :num', array(':num' => 1));  
- echo var_dump($result);  
 
 Результат: bool(false)   
- 
UpdateByPK. 
- $ids = array(18, 19, 20);     
- $result = Apartment::model()->updateByPk($ids, array('title_ru' => 'Новый заголовок'));   
 
 Результат: Возвращает true или false. При успешном выполнении для объявлений с ID равным 18, 19 и 20 значение поля title_ru в таблице выставлено в "Новый заголовок".   
- 
updateAll. 
- $result = Apartment::model()->updateAll(array('title_ru' => 'Новый заголовок'), 'title_ru = :title', array(':title' => 'квартира на ул. Авиамоторная'));  
 
 Результат: Возвращает true или false. При успешном выполнении для объявлений с полем title_ru, имеющим значение "квартира на ул. Авиамоторная", будет выставлено новое значение "Новый заголовок".   
- 
deleteByPk. 
- $result = Apartment::model()->deleteByPk(18);  
 
 Результат: Возвращает true или false. При успешном выполнении будет удалено объявление с ID равным 18.   
- 
deleteAll. 
- $result = Apartment::model()->deleteAll('title_ru = :title', array(':title' => 'дом на ул. Трубецкая'));  
 
 Результат: Возвращает true или false. При успешном выполнении будет удалено объявление со значением поля title_ru равным "дом на ул. Трубецкая".   
Обсудить статью на форуме