Demo

討論

保持飢餓,保持愚笨 (Stay hungry, stay foolish)。 史蒂夫·賈伯斯

公告

本網站已取消討論區的討論方式,如果您有問題請至LINE群行動條碼圖片網址,或Facebook社團

Jtable/bind的$ignore失效

  • maro
  • maro 的個人頭像 Topic Author
  • 訪客
  • 訪客
2012-01-09 17:58 #21514 來自 maro
maro created the topic: Jtable/bind的$ignore失效
先感謝論壇上的大家...快變成每日一問了 :sorry:
直入正題,model裡有個function store(),是用來做新增與修改儲存用的,這樣的模式是仿照官方範例hello world

其中有這樣一段程式
		if(JRequest::getVar('id', '', 'post', 'string')!='0'){
			//複寫文章
			$content_id = intval($this->queryContentID(JRequest::getVar('id', '', 'post', 'string')));
			$from = array( 'id'	=> $content_id,
			               'title'  => JRequest::getVar('name', '新增影片', 'post', 'string'),
			               'alias'  => JRequest::getVar('name', '新增影片', 'post', 'string'),
			               'introtext'	=> '<p>'.JRequest::getVar('name', '<p>新增影片</p>', 'post', 'string').'</p>',
			               'created'	=> null,
			               'created_by'	=> $user->get ('id'),
			               'modified_by'	=> $user->get ('id')
			             );
			$ignore = 'created';	//忽略新增時間欄位
			 
			// Get the table object from the model.
			$table = $this->getTable( 'content' );
			 
			// Bind the array to the table object.
			$table->bind( $from, $ignore );	//bind時忽略
			$table->store( $from, $ignore );	//store時忽略
		}

剛剛說到,這個store負責新增與修改儲存,不過function並沒有透過某種參數之類的控制到底是「新增」或「修改儲存」,看教學文件意思似乎是Jtable/bind處理了。

這時我發現一個奇怪的狀況,經過bind與store處理後,沒在$from設值的欄位都會被table裡的預設值覆寫
有看到一個$ignore屬性,照理說應該可以指定特定的欄位不更新(我的理解是這樣)
但不會只有$id才能夠忽略吧...(找到的教學資料都只有忽略$id)

附帶一提,table是如此設定的
	var $id = null;	//套入預設值,當然也可在DB裡設定
....(中略)
	var $created = null;
....(後略)

因為修改內容時,不用「更新」新增時間吧,我最直覺的想法就是用$ignore
不過目前怎樣都測不出來...(例如在$from設定成null或拿掉)

還請問大家有沒有遇到這問題
謝謝

Please 登入 to join the conversation.