天天看點

thinkphp5.0的一些“坑”

在使用tp5.0內建H-ui的過程中,走過了一些的彎路。畢竟是人寫的架構,多少會有一些的BUG。這裡把自己遇到的問題列舉出來。

1、使用ajax通路背景,背景使用dump調試,報錯不精準

我這裡先上一個例子。

頁面代碼:

$.ajax({
        dataType : 'json',
        type : 'POST',
        url : '__URL__/notice/test',
        async : true,
        data : {
            "aoData" : 'aaaa'//測試資料 
        },
        success : function(data){
            alert(data);
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {
            alert(XMLHttpRequest.status + "," + textStatus);
        }
    }); 
           

tp5背景代碼:

public function test(Request $request){     
        $aoData = $request->param('aoData');
        dump($aoData);
}
           

頁面結果:

D:\tools\wamp64\www\thinkphp5\thinkphp\library\think\Debug.php:165:null
           

這裡面明明是我們明顯的從頁面傳值{"aoData":'aaaa'}到背景,可背景的dump卻為空。但通過将參數傳回到頁面的操作,又能傳回值aaaa,是以,在使用ajax時,還是用最傳統的列印方式可靠一些。

2、查詢表達式的拼接問題(這個問題隻是在5.0中有,5.1已經解決了)

如以下代碼:

$sql = Db::name('notice')->where('delete_flg','0')->where('content','like','%d%');
$c = $sql->count();
$r = $sql->select();
           

我們拼接好了sql的查詢條件,然後以這個為基礎,去查詢總數和結果集,發現,隻有第一條有條件篩選的效果,而第二條沒有。後來作者回答說是:如果是5.0的話 查詢之後 你的所有的查詢條件就清空了。也就是說,每次執行一條查詢語句,都要重新組合查詢條件。是以,這裡面建議大家如果用5.0開發的話,最好用數組的方式去組合統一的查詢條件。

繼續閱讀