Подсказки по 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 равным "дом на ул. Трубецкая".
Обсудить статью на форуме