作者tkdmaf (皮皮快跑)
看板PHP
標題[心得] codeigniter的A_RECORD,where_in的問題
時間Sat Jun 16 13:38:48 2012
首先如果會使用物件的回傳串連法:
例:
$this->db->where('id',$id)->get('user');
如果你有這種習慣的在使用where_in時請注意。
where_in()、where_not_in()
他們的內部私有成員判斷當參數1和參數2均為無值時。
他回傳只有下return;
而非return $this;
這會導致如果你的第二參數是屬於自動給值的情形下。
萬一無值時就會導致物件無法回傳。
從那之後開始的所有串連寫法都會出錯。
解決方法有三:
1、本來就不使用串連法的不會有這種問題。
2、在給值之前,先自行判斷是否為空值,來避開這個問題。
3、如果你覺得ok,其實你可以考慮去核心把return $this加回去。
第3點我加過測試雖然無誤,但在不擅自改核心的情形下我又還原了他。
然後我是採取第2點的做法來避開無值造成的結果。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 175.180.97.168
推 MOONRAKER:贊,原來還有這層 06/16 20:27
推 j100002ben:不過我自己應該還是會去改核心,因為CI的授權條款我習 06/16 23:45
→ j100002ben:慣把system和app完全分開,專案Code只包括app這個部份 06/16 23:46
→ j100002ben:所以改Core對我來說和SVN開Branch差不多..整個資料夾 06/16 23:47
→ j100002ben:複製換個名字XD 06/16 23:47
→ j100002ben:這樣也很好管理CI升級的狀況.. 06/16 23:47