我對下面的代碼有些困惑,它簡單地檢查表中是否存在列,然後將其添加到帶有addField()的模型中。Model類中的公共var的未定義屬性?
奇怪然而,PHP error_log中警告我說,公共變量定義不正確,我第一次使用它:
/var/www/ocmal_db_svn/lib/Model/Conflicto.php:[Notice] Undefined property: Model_Conflicto::$entity_code,
這就是爲什麼SQL查詢拋出一個錯誤,因爲「SHOW列FROM」是不完整沒有表名...
在類中定義一個公共變量應該初始化它,不是嗎? 還是別的什麼問題?任何人都可以在這裏看到錯誤? 我忽略了什麼? (這是PHP 5.3 BTW)
class Model_Conflicto extends Model_Table {
public $entity_code='conflicto';
function init(){
parent::init();
if ($this->api->db->dsql()->expr("SHOW COLUMNS FROM `". $this->entity_code. "` LIKE 'lock_id'")->getOne()==null)
error_log('OCMAL_DB: WARNING: table '.$this->entity_code.' does not have lock_id, which is kinda BAD !!!');
else $this->addField('lock_id');
感謝您的意見。顯然這不是生產,並且error_log出於測試和兼容性原因。我會用你所建議的表格替換entity_code,看看它有什麼作用。 – gsteenss
是的:我現在看到,在Model_Table中:'function __construct(){if {this-> entity_code} {$ this-> table = $ this-> entity_code; 未設置($ this-> entity_code); } }' – gsteenss