1. 程式人生 > >thinkPHP使用中踩的坑,記錄一下(不停更)

thinkPHP使用中踩的坑,記錄一下(不停更)

切換 合法性 問題 table 字符串 mode true use data

版本3.2.3

1、數據庫操作中的連貫操作table(),在查詢的時候可以切換表,但是在插入,更新的時候請不要使用。例如

D(‘user‘)->table(‘auth‘)->add($data);

操作會出問題,因為插入的時候會把非user表的字段刪除

2.數據庫操作的create(),如果使用了框架的自動驗證功能,在create()時會驗證字段的合法性,有時候我們會多次create,進行批量添加或者修改,這時候會出問題。查看源碼,發現是因為裏面的$error屬性沒有重置。設置Model的$patchValidate為true是一種辦法,但是會導致返回的錯誤不再是一個字符串,而是數組,並且即使已經有不合法的字段了,還是會繼續驗證其他字段,解決辦法是

//重寫create方法,每次create,清空error
    public function create($data = ‘‘, $type = ‘‘)
    {
        $this->error = array();
        return parent::create($data, $type); // TODO: Change the autogenerated stub
    }

thinkPHP使用中踩的坑,記錄一下(不停更)