2011-08-26 30 views
0

所以,這裏是我的控制器代碼:CakePHP - SQL日誌顯示正在返回一行的正在運行的查詢,但結果變量爲NULL?

public function admin_index(){ 
    $clients = $this->paginate(); 
    $this->set(compact('clients')); 
} 

下面是從我的SQL轉儲相關查詢此頁:

SELECT `Client`.`id`, `Client`.`user_id`, `Client`.`first_name`, `Client`.`last_name`, `Client`.`company`, `Client`.`phone`, `Client`.`created`, `Client`.`modified`, (IF(LENGTH(company) > 0,company,CONCAT(first_name," ",last_name))) AS `Client__name` FROM `clients` AS `Client` WHERE 1 = 1 LIMIT 20 

該查詢返回下民行 1行(,1顯示,只是爲了清楚:)。

在視圖(或控制器),後續代碼var_dump($客戶)提供了NULL

我不明白這是爲什麼發生的事情!

+0

做一個'debug($ clients);退出;'$ this-> set(compact('clients'))之前''''你會得到預期的輸出嗎? – Ross

+0

@Ross - 不,變量中沒有任何東西。它不是一個空數組,但我相信沒有結果的查詢應該是,它實際上是空的。 – Will

回答

0

嗯,我覺得自己像一個有點小錢的...

有問題的代碼實際上是在模型文件,client.php。

public function afterFind(){ 
    //todo 
} 

我打算在這裏寫一些代碼,但忽略了。 afterFind需要返回一組結果。我沒有這樣做,因此所有對Client :: find的調用(即通過ClientsController :: paginate)都返回NULL,甚至沒有空數組。

0

在控制人變更情況:

$this->set(compact('clients')); 

$this->set('clients', compact('clients')); 

因爲如果不是在視圖中的變量還沒有名字,所以你不能訪問它。

+1

'$ this-> set(compact('clients'));'完全有效。 '$ this-> set('clients',compact('clients'));'會在視圖中將'$ clients'的值設置爲'array($ clients);'。 – JJJ

+0

實際上,'array('clients'=> $ clients)',但這個觀點依然存在。 – JJJ

+0

啊,我明白了,我猜我習慣於這樣做,謝謝你的糾正。 – 8vius

相關問題