Yii使用DeleteAll連表刪除出現(xiàn)報錯問題的解決方法
本文實例講述了Yii使用DeleteAll連表刪除出現(xiàn)報錯問題的解決方法。分享給大家供大家參考,具體如下:
刪除數(shù)據(jù)的時候,經(jīng)常會遇到連聯(lián)判斷刪除數(shù)據(jù)的條件,今天用Yii 的CDbCriteria生成關(guān)連條件。批量刪除的時候數(shù)據(jù)庫報錯。
頁面代碼為:
$criteria=new CDbCriteria; $criteria->join = ' LEFT JOIN {{positions}} p ON p.zpo_id=t.zpo_id '; $criteria->addCondition("p.zpo_type=1"); $criteria->addCondition("t.zpl_content_id in ($id)"); PosLog::model()->deleteAll($criteria);
錯誤SQL為:
正確SQL語句應(yīng)為:
追溯到Y(jié)ii 基類:
framework/db/schema/CDbCommandBuilder.php#166
public function createDeleteCommand($table,$criteria) { $this->ensureTable($table); $sql="DELETE FROM {$table->rawName}"; $sql=$this->applyJoin($sql,$criteria->join); $sql=$this->applyCondition($sql,$criteria->condition); $sql=$this->applyGroup($sql,$criteria->group); $sql=$this->applyHaving($sql,$criteria->having); $sql=$this->applyOrder($sql,$criteria->order); $sql=$this->applyLimit($sql,$criteria->limit,$criteria->offset); $command=$this->_connection->createCommand($sql); $this->bindValues($command,$criteria->params); return $command; }
解決方案。修改基類方法:
public function createDeleteCommand($table,$criteria,$alias='t') { $this->ensureTable($table); $alias=$this->_schema->quoteTableName($alias); if(empty($criteria->join)){ $sql="DELETE FROM {$table->rawName}"; }else{ $sql="DELETE $alias FROM {$table->rawName} $alias"; } $sql=$this->applyJoin($sql,$criteria->join); $sql=$this->applyCondition($sql,$criteria->condition); $sql=$this->applyGroup($sql,$criteria->group); $sql=$this->applyHaving($sql,$criteria->having); $sql=$this->applyOrder($sql,$criteria->order); $sql=$this->applyLimit($sql,$criteria->limit,$criteria->offset); $command=$this->_connection->createCommand($sql); $this->bindValues($command,$criteria->params); return $command; }
更多關(guān)于Yii相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結(jié)》、《php優(yōu)秀開發(fā)框架總結(jié)》、《smarty模板入門基礎(chǔ)教程》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家基于Yii框架的PHP程序設(shè)計有所幫助。
- Yii實現(xiàn)單用戶博客系統(tǒng)文章詳情頁插入評論表單的方法
- yii用戶注冊表單驗證實例
- yii2.0實現(xiàn)驗證用戶名與郵箱功能
- 在yii中新增一個用戶驗證的方法詳解
- 淺析Yii中使用RBAC的完全指南(用戶角色權(quán)限控制)
- PHP的Yii框架使用中的一些錯誤解決方法與建議
- yiic命令時提示“php.exe”不是內(nèi)部或外部命令的解決方法
- Yii使用ajax驗證顯示錯誤messagebox的解決方法
- yii2.0之GridView自定義按鈕和鏈接用法
- Yii2搭建后臺并實現(xiàn)rbac權(quán)限控制完整實例教程
- Yii2.0高級框架數(shù)據(jù)庫增刪改查的一些操作
- Yii2針對游客、用戶防范規(guī)則和限制的解決方法分析
相關(guān)文章
PHP中模糊查詢并關(guān)聯(lián)三個select框
這篇文章主要介紹了PHP中模糊查詢并關(guān)聯(lián)三個select框,需要的朋友可以參考下2017-06-06php實現(xiàn)信用卡校驗位算法THE LUHN MOD-10示例
這篇文章主要介紹了php實現(xiàn)信用卡校驗位算法THE LUHN MOD-10的示例,需要的朋友可以參考下2014-05-05使用composer安裝使用thinkphp6.0框架問題【視頻教程】
這篇文章主要介紹了使用composer安裝使用thinkphp6.0框架問題,通過一個小視頻給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10老司機傳授Ubuntu下Apache+PHP+MySQL環(huán)境搭建攻略
這篇文章主要介紹了Ubuntu下Apache+PHP+MySQL環(huán)境搭建攻略,文中采用的是LoadModule加載模塊的方式將PHP與Apache服務(wù)器程序連接,需要的朋友可以參考下2016-03-03