thinkphp5學習筆記

1. 助手函數操作數據庫

查詢:
db('user')->where('id',1)->find();
db('user')->where('status',1)->select();
添加:
db('user')->insert($data);
db('user')->insertAll($list);
更新:
db('user')->where('id',1)->update(['name' => 'thinkphp']);
db('user')->where('id',1)->setField('name','thinkphp');
刪除:
db('user')->delete(); 
db('user')->where('id',1)->delete();

2.靜態方法操作數據庫 (User::destroy()),事件函數只能這麼用
User 指的是 當前模塊model類

use app\admin\model\Article as articleModer ;
如果在控制器層調用方法,那麼User可以這樣表示:
1.\app\admin\model\Article::destroy()
2.articleModel::destroy()

3. 實例化類模型操作數據庫

use app\admin\model\Article as articleModel ;

$article=new articleModel();
然後執行相應操作

4. use 命名空間 和繼承名空間類的區別

useextends: 在當前類可以先實例化類對象然後進行調用命名空間裏的方法
extends: 當前類就存在了命名空間裏的方法,可以用this->來直接調用

5. 在HTML頁面中進行判斷輸出

 {if condition="$cate['type'] eq 0"} 列表
{else /}單頁欄目 {/if}

6. 將從數據庫獲取的數據傳給視圖層從HTML中展現出來

$data:獲取的數據
$this->assign('arr',$data);//將數據分配給前端

{volist name='list' id='list'}
   <option value='{$list.id}' {$list.cateName}</option>
{/volist}

//循環打印數據

7. 將圖片文件從表單傳到數據庫
tp5思路是將文件傳送到我們項目public目錄下的uploads文件裏,然後將圖片的地址傳到數據庫保存,想要用圖片的時候直接根據路徑去拿圖片即可。
注意事項:

//判斷臨時圖片文件是否存在
if($_FILES['pic']['tmp_name']){
        $file=request()->file('pic');
//轉移到uploads目錄下
       $thumb=$file->move(ROOT_PATH.'public'.DS.'uploads');
        if($thumb){
//這一步很關鍵!!!,如果上傳的是ROOT_PATH,那麼會將圖片的相對於本機的絕對地址傳上去,到時候在前端<img src=''>就會找不到圖片無法顯示,所以改成相對路徑,這樣就可以顯示圖片
          $pic='/public的上一級路徑'.'public'.DS.'uploads'.'/'.$thumb->getSaveName();

          $data['pic']=$pic;
        }
      }

問題又來了。。。

//當我們想要修改圖片或者刪除圖片這時候相對路徑又不管用了
 $thumbpath=$_SERVER['DOCUMENT_ROOT'].$arts['thumb'];
       if(file_exists($thumbpath)){
             @unlink($thumbpath);
         }
 //我們需要將文件的根路徑加在相對路徑前面然後纔可以刪除圖片        

8.驗證
在admin\controller目錄下創建一個文件夾(validate),在這裏面存放每個模塊需要驗證的驗證文件

validuate文件下:
namespace app\admin\validate;
use think\Validate;

class ***(驗證的模塊) extends Validate
{
   protected $rule=[
     ['字段','驗證的規則','驗證失敗的提示語'],
   ];
   //場景
   protected $scene=[
      'add/edit模塊'->['字段或者字段的某一項,用'.'來連接'],
   ];
}

在controller層進行驗證:
use app\admin\validate;
class *** extend Controller
{
    public class add(){
       $data='表單提交上來的數據';
       $this->validate($data,'***.add'); //add場景
   }
}

9.創建索引數組

 $arr=array();
 //將索引放入數組然後進行賦值,後面這種形式不對$arr[*** => ***]
 foreach ($data as $k => $v) {
      $arr[$v['enname']]=$v['value'];
 }

10.添加驗證碼
在登錄界面需要添加一個驗證碼,添加代碼如下

<img src='{:captcha_url()}' alt='captcha'>
如果點擊驗證碼進行刷新,加上一個點擊的觸發事件
<img src='{:captcha_url()}' onclick="this.src='{:captcha_url()}?'+'Math.random();'" alt='captcha'>

如果這是在登錄界面那就在登陸的控制層寫驗證

public function check($code){
  if(!$captcha_check($code)){
   報錯語句
  }
  else{
    return true;
  }
}

11.控制器和模型層駝峯式命名與視圖層命名注意點
控制器和模型可以採用駝峯,但是視圖層文件夾只能用下劃線間隔來命名

12.數據庫查詢where子句

where('字段名','表達式','查詢條件');  //查詢條件支持字符串和數組


表達式 含義
EQ、=    等於(=)
NEQ、<>  不等於(<>)
GT、>    大於(>)
EGT、>=  大於等於(>=)
LT、<    小於(<)
ELT、<=  小於等於(<=)
LIKE    模糊查詢
[NOT] BETWEEN   (不在)區間查詢
[NOT] IN    (不在)IN 查詢
[NOT] NULL  查詢字段是否(不)是NULL
[NOT] EXISTS    EXISTS查詢
EXP 表達式查詢,支持SQL語法
> time  時間比較
< time  時間比較
between time    時間比較
notbetween time 時間比較

13.項目的目錄與域名對應的文件目錄問題
問題描述:項目肯定要將一部分目錄放到域名的文件目錄中,那麼從外網訪問項目時候,項目中的路徑都會以你的域名開始,所以在對項目某些路徑設置的時候要根據自己餘域名中設置的目錄進行設置,比如:項目的完整目錄如下: project/public/index/…. 我們的域名如果設置的文件目錄要將前三級目錄覆蓋掉,那麼在項目中的相對目錄也要將前三級去掉。

發佈了36 篇原創文章 · 獲贊 14 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章