Поскольку я использовал CI, когда впервые начал изучать PHP-фреймворк, а затем начал связываться с Yii, когда не был знаком со всеми видами Baidu, потому что мой английский очень слаб, это заняло много времени.
Если вы хорошо владеете английским языком, вы можете прочитать исходный адрес http://www. yii framework.com/doc/guide/1.1/en/database.ar напрямую.
I. Для одной модели новостей Существует множество методов запроса, таких как возврат объекта или массива объектов.
$post = News:: model () - > find ($condition, $params); // query by specified conditions $post = News:: model () - > findByPk ($postID, $condition, $params); /// Query through the primary key of the news table $post = News:: model () - > findByAttributes ($attributes, $condition, $params); /// Continue querying by specifying key values $post = News:: model () - > findBySql ($sql, $params); // Query through SQL statements
А теперь давайте посмотрим на это. find()
Метод: Например, нам нужно выполнить запрос. nid
по 5
Эти данные
$post=News::model()->find('nid=:newsID', array(':newsID'=>5));
условие $условие
Это мы. sql
Li где
Детали, переданные параметры параметры
Передают его дальше. Обратите внимание, что имени предшествует добавление. ": "
.
оставайся Yii
Мы тоже можем это использовать. CDbCriteria
Класс для построения запросов, если мы запрашиваем nid
по 5
название
Значение, CDbCriteria
Он структурирован следующим образом:
$criteria = new CDbCriteria; $criteria - > select ='title'; // Query only the corresponding title field, do not return the entire data in this sentence $criteria->condition='nid=:newsID'; $criteria->params=array(':newsID'=>5); News = News:: model () - > find ($criteria); // params is not required
Это также может быть написано следующим образом:
$news = News::model()->find(array( 'select'=>'title', 'condition'=>'nid=:newsID', 'params'=>array(':newsID'=>5), ));
А теперь давайте посмотрим на это. findByAttributes()
Метод, возврат Одна статья
Запись:
News::model()->findByAttributes(array('title'=>'abc'));
Параметр равен единице. Пары Ключ-значение
Из массива
。
Есть и другие способы:
$admin=Admin::model()->findAll($condition,$params);
Метод основан на одном условии
Запросе/| агрегате , например:
findAll("username=:name",array(":name"=>$username));
Запрос по первичному ключу:
$admin=Admin::model()->findAllByPk($postIDs,$condition,$params); findAllByPk($id,"name like ':name' and age=:age" ,array(':name'=>$name,'age'=>$age));
Метод основан на Первичном ключе
Для запроса коллекции можно использовать Несколько первичных ключей
, например: findAllByPk(массив(1,2))
;
запрос Все
Устанавливает удовлетворяющие условиям:
$admin=Admin::model()->findAllByAttributes($attributes,$condition,$params);
Метод основан на условии
Запросе один агрегат
Это может быть несколько условий, размещать условия в массиве и запрашивать их по атрибутам, например sql
Из где
Более одного из них и
, например: findAllByAttributes(массив('имя пользователя'=>'администратор'));
SELECT * from one_table where username = 'admin' and password ='123456';
Соответствующая AR-модель
Запрос выглядит следующим образом
Admin::model()->findAllByAttributes(array('username'=>'admin', 'password'=>'123456'));
принять SQL
Запрос оператора Все
Результаты, удовлетворяющие условиям
$admin=Admin::model()->findAllBySql($sql,$params);
Метод основан на SQL
Оператор запрашивает массив, например:
findAllBySql("select *from admin where username=:name",array(':name'=>'admin'));
принять SQL
Запрос оператора Одна статья
Результаты, удовлетворяющие условиям
$admin=Admin::model()->findBySql($sql,$params);
Метод основан на SQL
Оператор запрашивает массив, например:
findBySql("select *from admin where username=:name",array(':name'=>'admin'));
2. Количество запросов для определения того, являются ли результаты запроса
1. Этот метод запрашивает набор в соответствии с его условием. Сколько
Записей, верните один int
Номер типа, например
$n=Post::model()->count($condition,$params); count("username=:name",array(":name"=>$username));
2. Метод основан на SQL
Операторном запросе, В коллекции есть Сколько
Записей, возвращающих один int
Номер типа, например
$n=Post::model()->countBySql($sql,$params); countBySql("select *from admin where username=:name",array(':name'=>'admin'));
3. Этот метод основан на массиве условных запросов. Есть ли какие-либо
Данные, если таковые имеются, возвращающие значение true
В противном случае их не удалось найти:
$exists=Post::model()->exists($condition,$params);
3. Способ добавления
$admin=new Admin; $admin->username=$username; $admin->password=$password; if($admin->save()>0){ Echo "add success"; }else{ Echo "add failure"; }
IV. Способ модификации
1、 обновить все()
Post::model()->updateAll($attributes,$condition,$params); $count = Admin::model()->updateAll(array('username'=>'11111','password'=>'11111'),'password=:pass',array(':pass'=>'1111a1')); if($count>0){ Echo "successful modification"; }else{ Echo "failed to modify"; }
2、 updateByPk()
Post::model()->updateByPk($pk,$attributes,$condition,$params); // $count = Admin::model()->updateByPk(1,array('username'=>'admin','password'=>'admin')); $count = Admin::model()->updateByPk(array(1,2),array('username'=>'admin','password'=>'admin'),'username=:name',array(':name'=>'admin')); if($count>0){ Echo "successful modification"; }else{ Echo "failed to modify"; }
$pk
Представляет первичный ключ, который может быть либо набором, либо набором. $атрибуты
Представляет набор полей, подлежащих изменению. $условие
Условия представления, $параметры
Входное значение
3、 счетчики обновлений()
Post::model()->updateCounters($counters,$condition,$params); $count =Admin::model()->updateCounters(array('status'=>1),'username=:name',array(':name'=>'admin')); if($count>0){ Echo "successful modification"; }else{ Echo "failed to modify"; }
массив("статус"=>1)
Представляет таблицу администратор
на основе условий имя пользователя= "администратор"
Все запрошенные результаты статус
Поля добавляются самостоятельно 1
V. Способ удаления
1、 удалить все()
Post::model()->deleteAll($condition,$params); $count = Admin::model()->deleteAll('username=:name and password=:pass',array(':name'=>'admin',':pass'=>'admin')); $id=1,2,3; DeleteAll ('id in (". $id.")'); and // delete ID for these data if($count>0){ Echo "Delete successfully"; }else{ Echo "Delete failed"; }
2、 deleteByPk()
Post::model()->deleteByPk($pk,$condition,$params); // $count = Admin::model()->deleteByPk(1); $count = Admin::model()->deleteByPk(array(1,2),'username=:name',array(':name'=>'admin')); if($count>0){ Echo "Delete successfully"; }else{ Echo "Delete failed"; }
Yii AR
Есть более простые операции, которые вы можете постепенно испытать в использовании.