Yii2 常用代码集合

Yii2.0 对数据库查询的一些简单的操作

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 User::findOne($id);   //此方法返回 主键 id=1  的一条数据(举个例子);    User::find()->where(['name' => '老司机'])->one();   //此方法返回 ['name' => '老司机'] 的一条数据;   User::find()->where(['name' => '老司机'])->all();   //此方法返回 ['name' => '老司机'] 的所有数据;   User::find()->orderBy('id DESC')->all();   //此方法是排序查询;   User::findBySql('SELECT * FROM user')->all();  //此方法是用 sql  语句查询 user 表里面的所有数据;   User::findBySql('SELECT * FROM user')->one();  //此方法是用 sql  语句查询 user 表里面的一条数据;   User::find()->where("sex=:sex and age>:age", [':sex' => '男''age' => '24'])->count('id');   //统计符合条件的总条数;   User::find()->andWhere(['sex' => '男''age' => '24'])->count('id');   //统计符合条件的总条数;   User::find()->andFilterWhere(['like''name''老司机']); //此方法是用 like 查询 name 等于 老司机的 数据   User::find()->one();    //此方法返回一条数据;   User::find()->all();    //此方法返回所有数据;   User::find()->count();    //此方法返回记录的数量;   User::find()->average();    ///此方法返回指定列的平均值;   User::find()->min();    //此方法返回指定列的最小值 ;   User::find()->max();    //此方法返回指定列的最大值 ;   User::find()->scalar();    //此方法返回值的第一行第一列的查询结果;   User::find()->column();    //此方法返回查询结果中的第一列的值;   User::find()->exists();    //此方法返回一个值指示是否包含查询结果的数据行;   User::find()->batch(10);  //每次取 10 条数据    User::find()->each(10);  //每次取 10 条数据, 迭代查询

直接操作数据库 - 添加

1 2 3 4 5 6 7 8 9 10 11 $connection = \Yii::$app->db; $table '{{%user}}'; $data = [     "name" => $name, ]; $result $connection->createCommand()->insert($table$data)->execute(); //返回数量 if($result){     return ["status"=>1, "info"=>"保存成功""url"=>Url::to(['user/index'])]; }else{     return ["status"=>0, "info"=>"保存失败"]; }

直接操作数据库 - 批量插入

1 2 3 4 5 6 7 8 9 10 11 12 13 $connection = \Yii::$app->db; $table '{{%goods}}'; $data = [     "name" => "商品名称",     "price" => "25.63", ]; $lebels = ['name''price']; $result $connection->createCommand()->batchInsert($table$lebels$data)->execute(); if($result){     return ["status"=>1, "info"=>"保存成功""url"=>Url::to(['goods/list'])]; }else{     return ["status"=>0, "info"=>"保存失败"]; }

直接操作数据库 - 修改

1 2 3 4 5 6 7 8 9 10 11 $connection = \Yii::$app->db; $table '{{%user}}'; $data = [     "name" => $name, ]; $result $connection->createCommand()->update($table, ['name'=>$data["name"]], ['id'=>intval($data["id"]), 'uid'=>$uid])->execute(); //返回数量 if($result){     return ["status"=>1, "info"=>"保存成功""url"=>Url::to(['buyer/goods''id'=>$data["id"]])]; }else{     return ["status"=>0, "info"=>"保存失败"]; }

直接操作数据库 - 删除

1 2 3 4 5 6 $data $connection->createCommand()->delete($table, ["uid" => $uid"id" => $id])->execute(); //返回数量 if(!$data){     return ["status"=>0, "info"=>"删除失败 [没有找到相应内容]"]; }else{     return ["status"=>1, "info"=>"成功删除".$data."条记录"]; }

直接操作数据库 - 查询

1 2 3 4 5 6 7 $uid = Yii::$app->user->id; $table '{{%shop}}'; $query new Query; $data $query->from($table)->where(["uid" => $uid])->one(); if($data===false){     throw new \yii\web\NotFoundHttpException('店铺不存在'); }

设置错误提示

1 2 Yii::$app->session->setFlash('info''添加成功'); //类型可以为:error、danger、success、info、warning return $this->refresh(); //返回上一页并刷新

显示上面设置的错误提示

1 2 3 if( Yii::$app->session->hasFlash('info') ) {     echo Yii::$app->session->getFlash('info'); }

设置模型验证器返回的错误

1 2 3 4 5 6 7 8 9 10 11 12 13 14 if$model->getErrors() ) {     $msg '';         foreach($model->getErrors() as $k => $v){             $msg .= '<p>• '.$v[0].'</p>';         }     echo $msg; }   //或显示第一个错误信息:     if($model->getErrors()){         return ["status"=>0, "info"=>array_values($model->getFirstErrors())[0]];                             }else{         return ["status"=>1, "info"=>"成功"];                             }

SCENARIO 场景

1 2 $user new User(); $user->scenario = "login"//登录场景

REQUEST

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 Yii::$app->request->get('id', 0); Yii::$app->request->post('name'); if(Yii::$app->request->isGet){ } if(Yii::$app->request->isPost){ } if(Yii::$app->request->isAjax){ }   //返回首页 Yii::$app->homeUrl   //返回上一页 return $this->goBack();   //当字符串中带有空格或者括号等会引起浏览器曲解,就要加上Html::encode进行Html编码的转换,以防出现一些不必要的错误 Html::encode($this->title);   //获取IP Yii::$app->getRequest()->getUserIP();

获取config/main.php配置的值

1 Yii::$app->authManager->assignmentTable

获取config/params.php配置的值

1 Yii::$app->params['paramsName']

yii2中常用路径

1 2 3 4 5 6 7 8 项目路径:Yii::$app->BasePath 或 Yii::getAlias('@app') 输出E:\website\wx\wwwroot\backend 根目录路径:dirname(Yii::$app->BasePath) 或 dirname(Yii::getAlias('@app')) 输出E:\website\wx\wwwroot 根目录下的任意目录:dirname(Yii::$app->BasePath).'/uploads' 或 dirname(Yii::getAlias('@app')).'/uploads'   $backend str_ireplace(dirname(Yii::getAlias('@frontend')), "", Yii::getAlias('@backend')); $url = Url::to(['/goods/view''id' => 5]); $url str_ireplace($backend""$url); $url = Yii::$app->params['site_url'] . $url;

文件缓存

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 //将信息写入缓存 $cache = Yii::$app->cache; $cache->set("cacheName"$cacheData);   //从缓存取出信息 $cache = Yii::$app->cache; $data $cache->get("cacheName"); if($data){     //读取成功 }   //删除指定的缓存 $cache = Yii::$app->cache; $cache->delete("cacheName");   yii\caching\Cache::get():通过一个指定的键(key)从缓存中取回一项数据。如果该项数据不存在于缓存中或者已经过期/失效,则返回值 false。  yii\caching\Cache::set():将一项数据指定一个键,存放到缓存中。  yii\caching\Cache::add():如果缓存中未找到该键,则将指定数据存放到缓存中。  yii\caching\Cache::mget():通过指定的多个键从缓存中取回多项数据。  yii\caching\Cache::mset():将多项数据存储到缓存中,每项数据对应一个键。  yii\caching\Cache::madd():将多项数据存储到缓存中,每项数据对应一个键。如果某个键已经存在于缓存中,则该项数据会被跳过。  yii\caching\Cache::exists():返回一个值,指明某个键是否存在于缓存中。  yii\caching\Cache::delete():通过一个键,删除缓存中对应的值。  yii\caching\Cache::flush():删除缓存中的所有数据。

用户相关

1 2 3 4 5 6 7 8 9 10 11 //判断用户是否登录 if(Yii::$app->user->isGuest){     //未登录 }else{     //已登录 }   //取得用户信息 $user = Yii::$app->user->identity; echo $user->username; echo $user["username"];

跳转

1 return Yii::$app->response->redirect(["/shop/apply"], 302);

原文地址:https://www.cnblogs.com/cqlb/p/10857367.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


1、将Yii2.0advanced版中应用主体frontend或backend应用复制为api应用2、在应用主体api目录的controller新建SiteController.php:namespaceapi\controllers;useYii;useyii\rest\ActiveController;/*SiteController测试控制器*/classSiteControllerextendsActiveCon
Yii2restfulAPI文档一、配置模块:1.Config/main.php:  2.创建模块目录:  3.Module.php:  二、路由配置:  三、控制器:  四、Models:   五、测试:GET:  POST:  PUT:      DELETE:  
Yii在framework/i18n/data/%lang%.php文件中有很多翻译.这是例如germantranslations我想在我的Yii项目中使用Fullcalendar.要翻译此日历,我必须为当前语言提供一个monthNames/dayNames数组.FullcalendarmonthNamesDocumentationYii生成数组的最佳方法是什么:['January'
在Yii2中,官方的页面多语言解决方案有两个:方案1,使用Yii::t()函数,在页面中需要输出文字的地方,使用类似如下代码:<?=Yii::t(‘views/login’,‘hello’)?>这样做的后果是页面上大量充斥着类似的代码,导致页面可读性很差,而且对于同一个页面来说,Yii::t()函数的第一个参数基本上都是
Yii2.0对数据库查询的一些简单的操作123456789101112131415161718192021222324252627282930313233343536373839User::findOne($id);   //此方法返回 主键 id=1  的一条数据(举个例子);  User::find()->where(['name' =
数据查询User::find()->all();此方法返回所有数据;User::findOne($id);此方法返回主键id=1的一条数据(举个例子);User::find()->where(['name'=>'小伙儿'])->one();此方法返回['name'=>'小伙儿']的一条数据;User::find()->where(['n
最近打算提升自己的解决问题能力,于是打算从学习其他框架下手,让我们先去了解yii框架是如何运作的吧!https://www.yiichina.com/访问yii中文网站  让我们先把框架下载下来点击下载框架 科普一下:目前yii框架有三个版本yii1.0、yii1.1、yii2.0貌似即将推出3.0 这里我们
如何在Yii2中检查模型属性的类型(列类型)?ThisoldYiiForumanswer给了我一个结论,在Yii1中我可以使用类似的东西:$model->getMetaData()->columns['attribute-name']->type;但我没有成功将此解决方案移植到Yii2.有人可以帮忙吗?解决方法:您可以使用:$model->getTableSchema()
defined('YII_DEBUG')ordefine('YII_DEBUG',true);defined('YII_ENV')ordefine('YII_ENV','dev');require(__DIR__.'/../vendor/autoload.php');//注册类加载器require(__DIR__.'/../vendor/yii
在NGINX中配置:location/{   if(!-e$request_filename){    rewrite^/(.*)/index.phplast;}这样,当NGINX找不到文件的时候,就会将URL重写为index.php。对于URL中只有域名的情况,因为不存在对应的文件,所以会匹配到。再配置:location~\.php${  include
Yii2.0封装的类足够强大,Mailer的使用方法做一个总结:1、先在main-local.php中做好配置:return[//....'components'=>['mailer'=>['class'=>'yii\swiftmailer\Mailer',],],];详细如下:return[//....'components'=>[
每当我尝试登录我的Yii应用程序时,它都会显示错误CDbConnectionfailedtoopentheDBconnection:couldnotfinddriver.我google了很多个小时,从许多博客我知道我需要pdo_mysql,但已经安装了.在php.ini中我也对这些行做了评论;extension=php_pdo_mysql.dll;extension
我有一个模型Aziende,它与称为Annunci的花药模型相关(1:N),如下所示:'annunci'=>array(self::HAS_MANY,'Annunci','azienda_id'),我想算一下有多少记录确实有这种关系,在mySql中我会做:SELECTcount(*)FROM`aziende`aJOINannuncianONan.azienda_id=a.id我怎么能
我们有一个项目,为孟加拉国最大的服装行业之一建立一个ERP系统.他们有大约20,000名员工,其中约10%的员工每个月都会离职.我们是一家拥有5名PHP开发人员的小公司,对这么大的项目没有多少经验.我们之前使用Codeigniter/ZendFramework和MySQL数据库开发了不同的中小规模项目.对于
我在Yii中有一些表单,使用以下内容以下拉形式从相关表中获取数据列表:dropDownList(CHtml::listData(Company::model()->findAll(array('order'=>'companyASC'))));这是有效的,但这意味着对于每个下拉列表(其中很多)我将这个数组(‘order’=>’公司ASC’放在每一个中.这是最
本文采用Yii文档,经过自己的修改,让读者更容易理解预定义完整列表: boolean : CBooleanValidator 的别名,确保属性的值是CBooleanValidator::trueValue 或CBooleanValidator::falseValue .captcha : CCaptchaValidator 的别名,确保了特性的值等于 CAPTCHA 显示出来
前面已经安装好了yii框架,现在我们来建立第一个Yii应用1、进入您网站更目录2、执行命令:YiiRoot/framework/yiicwebapptestdrive说明:这里的YiiRoot为您Yii框架的安装目录。3、输入以上命令后,会出现一个提示信息:PHPWarning:PHPStartup:Unabletol
一、ThinkPHPThinkPHP(FCS)是一个轻量级的中型框架,是从Java的Struts结构移植过来的中文PHP开发框架。它使用面向对象的开发结构和MVC模式,并且模拟实现了Struts的标签库,各方面都比较人性化,熟悉J2EE的开发人员相对比较容易上手,适合php框架初学者。ThinkPHP的宗旨是简化开发、提
我必须实现标题中提到的验证,即需要两个字段之一(电子邮件,电话).我在我的模型中这样做:[['email'],'either',['other'=>['phone']]],这是方法:publicfunctioneither($attribute_name,$params){$field1=$this->getAttributeLabel($attribute_nam
我试图得到(StatusCode)响应RESTapi,而它只返回字段名称和错误消息,如下所示[{"field":"Email","message":"Email\"ali@ali.ali\"hasalreadybeentaken."}]我添加了回复'response'=>['class'=>'