2 回答

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
我相信它對(duì)“off_number”不起作用的原因在于這段代碼
if($on_number)
$exists = count($this->duty_book_model->getByWhere([
//THE NEXT LINE IS THE PROBLEM - LOOK AT THE VALUE!!!
'off_number' => $on_number, //value should be $off_number - right?
'id !=' => $notId,])) > 0 ? true : false;
也就是說,我認(rèn)為您的代碼一團(tuán)糟。我這么說是因?yàn)橐袷?MVC 模式,您的控制器邏輯的很多都應(yīng)該在模型中。海事組織,這一切都應(yīng)該是。
我會(huì)getByWhere()用一個(gè)名為check(). 如果有'id!= $notId AND'on_number' = $on__number` AND off_number', $off_number 的記錄,它將返回 true 。如果缺少任何一個(gè)必需的輸入,或者沒有找到記錄,則返回 false。
當(dāng)您查看以下代碼時(shí),重要的是要了解$this->input->get('some_input')如果$_GET('some_input')為空則返回 null 。
class Duty_book_model extends MY_Model
{
public $table = 'tbl_duty_type';
public function check()
{
$on_number = $this->input->get('on_number');
$notId = $this->input->get('notId');
if(empty($on_number) || empty($notId))
{
return false;
}
$query = $this->db
->select('id') //could be any field
->where('id !=', $notId)
->where('on_number', $on__number)
->where('off_number', $off_number)
->get($this->table);
//given $notId = 111 AND $on_number = 222 AND $off_number = 333
//produces the query string
//SELECT `id` FROM `tbl_duty_type` WHERE `id` != 111 AND `on_number` = 222 AND `off_number` = 333
if($query) //might be false if the query string fails to work
{
return $query->num_rows > 0; //returns boolean
}
return false;
}
}
那么你在控制器中所需要的就是
$exists = $this->duty_book_model->check();
echo $exists ? 'false' : 'true';

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超18個(gè)贊
首先,你有一個(gè)錯(cuò)字 'on_number' => $on__number, 你已經(jīng)加倍下劃線$on__number
第二件事 - 您的支票僅適用于的原因off_number是因?yàn)槟?exist在兩種情況下都使用了變量。對(duì)于 的檢查結(jié)果是什么并不重要on_number,因?yàn)樗偸菚?huì)被off_number檢查重寫。
解決這些問題的一種方法是使用兩個(gè)不同的變量:
if($on_number){
$exists_on = count($this->duty_book_model->getByWhere([
'on_number' => $on_number,
'id !=' => $notId,
])) > 0 ? true : false;
$exists_off = count($this->duty_book_model->getByWhere([
'off_number' => $on_number,
'id !=' => $notId,
])) > 0 ? true : false;
}
echo (($exists_on===true)&&(exists_off===true)) ? 'false' : 'true';
這不是最好的解決方案,但它必須是最清楚的。
- 2 回答
- 0 關(guān)注
- 208 瀏覽
添加回答
舉報(bào)