Поскольку я использовал 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 Есть более простые операции, которые вы можете постепенно испытать в использовании.