1.数据库的配置在
Yii框架专门提供了一个配置文件(basic/config/db.php)给我们。
2.创建数据库模型
数据模型:
1,和表名一致的文件;
2,引入命名空间:namespace app\models;
3, 使用命名空间:use yii\db\ActiveRecord;
4, 创建与表名一致的类并继承ActiveRecord;
sql语法:
查询:
// $sql='select * from Test where id=:id ';<br>
// $result=Test::findBySql($sql,array(':id'=>2))->asArray()->all();//findBySql第二个参数设置占位符<br>
//id>=1 and id<=2
//$results = Test::find()->where(['between','id',1,2])->all();
//echo count($results);
//title like '%title%'
//$results=Test::find()->where(['like','title','title'])->all();
//print_r($results);
//将查询结果转换成数组
// $results=Test::find()->where(['like','title','title'])->asArray()->all();
//批量查询
foreach ($Test::find()->batch(2) as $value) {
# code...
}
print_r($results);
删除:
//删除数据有个更快捷的方式:调用控制器当中的deleteAll()方法把整个表里的数据删掉;同时这个方法里也可以带上查询条件指定删除哪部分的数据。
//Test::deleteAll('id>0');
Test::deleteAll('id>:id',array(':id'=>0));//deleteAll也支持占位符的功能
添加
// $orders = new Orders();
// $orders->oid ='1';
// $orders->status = '1';
// $orders->validate();//验证器,验证字段是否合法
// if($orders->hasErrors()){
// echo 'data is error';//字段不合法
// die;
// }
// $orders->save();
修改
$test=Orders::find()->where(['coid'=>1729])->one();
//PRINT_R($test);DIE;
$test->status='1';
$test->save();
联表操作
关联查询:
use yii\db\ActiveRecord;
class Customer extends ActiveRecord{//帮助顾客获取订单
自己进行定义
public function getOrders(){
$result=$this->hasMany(order::className(),['customer_id'=>'id'])->asArray()->all();
return $result;
}
}
关联查询:
hasMany:一对多,hasOne:一对一
$customer->orders; $customer当没有orders属性时,$customer自动调用_get()方法,拼接调用getOrders()方法,并自动在后面加上all()方法或者one()方法,至于何时自动拼接all或者one,取决于关联查询是用的hasMany还是hasOne,如果是hasMany则拼接all,否则反之。
//关联查询
//根据顾客查询她/他的订单的信息
// $customer = Customer::find()->where(['name'=>'zhangsan'])->one();
customer表 customer_id(是$customer返回的这条数据中的customer_id) ordes表 id 关联
// $order = $customer->hasMany('app\models\Order',
['customer_id'=>'id'])->asArray()->all();
// $orders = $customer->getOrders();
// $orders = $customer->orders;
// print_r($orders);
//根据订单查询顾客的信息
$order = Order::find()->where(['id'=>1])->one();
$customer = $order->customer; //以属性的方式获取数据
print_r($customer);
注:若使用以属性的方式获取数据,则在模型里面要定义一个方法,该方法要以get+属性的命名方式。