Yii2 經常使用代碼集合

Yii2.0 對數據庫查詢的一些簡單的操做php

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 條數據, 迭代查詢

直接操做數據庫 - 添加web

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" => "保存失敗" ];
}

直接操做數據庫 - 批量插入sql

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( '店鋪不存在' );
}

設置錯誤提示yii2

1
2
Yii:: $app ->session->setFlash( 'info' '添加成功' );  //類型能夠爲:error、danger、success、info、warning
return  $this ->refresh();  //返回上一頁並刷新

顯示上面設置的錯誤提示session

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

設置模型驗證器返回的錯誤app

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 場景frontend

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);
相關文章
相關標籤/搜索