-
关联查询: 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(); // $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+属性的命名方式。查看全部
-
//修改数据 $result = Test::find()->where(['id'=>4])->one(); $result->title="title4"; $result->save();查看全部
-
添加数据: helloController.php文件: $test = new Test; $test->id = 3; $test->title = 'title3'; $test->validate();//验证器,验证字段是否合法 if($test->hasErrors()){ echo 'data is error';//字段不合法 die; } $test->save(); 如果想要验证,在模型test.php文件中有对应的方法rules进行验证 test.php: public function rules(){ return [ ['id','integer'],['title','string','length'=>[0,5]]]; }查看全部
-
//数据模型之单表删除 //删除数据,先取出要删除的数据 /*$results = Test::find()->where(['id'=>1])->all(); $results[0]->delete();//调用delete()方法就可以删除第一条数据*/ //删除数据有个更快捷的方式:调用控制器当中的deleteAll()方法把整个表里的数据删掉;同时这个方法里也可以带上查询条件指定删除哪部分的数据。 //Test::deleteAll('id>0'); Test::deleteAll('id>:id',array(':id'=>0));//deleteAll也支持占位符的功能查看全部
-
1.ActiveRecord(活动记录类)<br> (1)方法:findBySql()继承之父类的,结果返回一个对象(放在数组当中)<br> 2.SQL入侵<br> (1)占位符:(:id),加载Sql语句后面<br> (2)在findBySql($sql,array())数组中赋值。由于array()会把用户传递过来的值作为一个整体去处理,<br> (3)findBySql防止SQL注入<br> // $sql='select * from Test where id=:id ';<br> // $result=Test::findBySql($sql,array(':id'=>2))->asArray()->all();//findBySql第二个参数设置占位符<br> <br> $sql='select * from Test where id=:id ';<br> $result=Test::find($sql)->where(['id'=>3])->asArray()->all();//findBySql第二个参数设置占位符<br> p($result); //id>0 /*$results = Test::find()->where(['>','id',0])->all(); print_r($results);*/ //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);查看全部
-
$layout = common ; //布局文件 $this 视图组件 如果想替换公共文件中的某段(数据块),可以在视图文件中使用: <?php $this->beginBlock('block1'); ?> <h1>....</h1> <?php $this->endBlock();?> 公共文件中调用 <?=$this->blocks['block1'];?> 判断显示数据块有木有,然后在显示 <?php if(isset($this->blocks['block1'])):?> <?=$this->blocks['block1'];?> <?php else: ?> <h1>hello Common </h1> <?php endif; ?>查看全部
-
1.在一个视图(index.php)中显示另一个试图(about.php):在视图index.php文件中使用<?=php echo $this->render('about');?>显示about视图; 2.注意:这时候Controller调用的是renderpartical() 3.当需要给(about.php)页面传入参数时,用render的第二个参数:$this->render('about',array('key'=>'value')),这样就可以把第二个参数数组传递给about.php这个视图中 4.(about.php)页面如何使用(index.php)页面传递过来的数据? (1)通过数组下边(key)直接可以访问 (2)语句:<?=$key;?>查看全部
-
public $layout = 'common';//通过$layout属性去告诉render方法去显示common布局文件 //视图之布局文件 //把布局文件common.php和视图文件home.php、about.php用render()方法进行拼合,才 能达到之前视图的显示效果。 //rensder()方法在显示视图文件的时候会做2件事:第1件事是会把视图里的内容放到$content这个变量中;第2件事是render()方法会把布局文件给显示出来。 return $this->render('about');查看全部
-
<?php use yii\helpers\Html; use yii\helpers\HtmlPurifier; ?> <P><?=Html::encode($view_hello_str) ?> </P>//可以原样显示<script></script>代码 <P><?=HtmlPurifier::process($view_hello_str) ?> </P>//可以过滤掉<script></script>代码查看全部
-
1.控制器和视图之间传递数据: (1)定义一个变量$hello="Hello World!"; (2)声明一个数组$date=array(); (3)这里使用了关联数组,把这个字符串变量放到数组$date中 (4)$date['view_hello_str']=$hello; (5)return $this->renderPartial(“index”,$date); 2.在视图中如何使用数据(也就是控制器传递过来的数组) (1)只需在模板中调用$data的key值(也就是数组下标),即可获得对应的value值 (2)<?=$键名 ?> //?= 之间不能有空格查看全部
-
1.Controller和View关联 (1)控制器中: 调用一个renderpartial()方法,这个方法是基类Controller中的方法 这里使用$this这个关键字调用。 (2)renderpartial(“parm”),参数表示要显示那个视图文件,当然yii还规定了要显示视图,必须在前面加一个return语句: 完整语句:return $this->renderpartial(“parm”); (3)别的都叫方法,yii中就得叫动作。查看全部
-
//server到客户端 $cookie = Yii::$app->response->cookies; //获取cookie $cookie_data = array('name'=>'user', 'value'=>'slcheng'); $cookie->add(new yii/web/Cookie($cookie_data)); //设置cookie数据 $cookie->remove('user'); //删除cookie数据 //从客户端取得cookie $cookie = Yii::$app->request->cookies; //获得浏览器请求的数据查看全部
-
session.save_path session 保存的路径,在php.ini中设置<br> session->open();开启session<br> $session->set();创建seesion数据<br> $session->get()取出session数据<br> $session->remove()删除session数据<br> /可以通过数组方式进行操作session<br> $session[] = ''<br> unset($sission[])//删除<br> //两张方式,一种是对象方式处理,另一种是数组方式查看全部
-
相应处理: $res = \YII::response; 更改状态码:$res->statusCode = "404"; 添加header: $res->header->add("pragma", "no-cache"); 修改header: $res->header->set("pragma", "max-age=5"); 删除header: $res->header->remove("pragma"); 跳转: $res->header->add("location", "http://www.baidu.com"); 重定向:$this->redirect("http://www.baidu.com", "302"); 文件下载:$res->header->add("content-disposition", "attachment; filename="a.jpg"); $res->sendFile("./robots.txt");查看全部
-
namespace是用来区分不同位置的相同类名,use关键字用来定义重复的位置,as用来进行修改相同类名,直接\是用来引用顶层空间的文件查看全部
举报
0/150
提交
取消