2012-11-06 45 views
5

我有兩個表名爲calendar_colour和用戶,CakePHP的複雜找到「NOT IN」

calendar_colour 
(
    colour_id int primary key, 
    colour varchar(15) 
) 


user 
(
    id int primary key, 
    name varchar(30), 
    color int, 
    foreign key(color) references calendar_colour(colour_id) 
) 

在我不得不選擇從下拉框中選擇一種顏色的用戶的附加功能。但我想使用之前用戶尚未使用的顏色填充下拉菜單。我嘗試使用find命令,但它似乎是錯誤的。

$curColours = $this->EventType->query('select color from event_types'); 

$this->set('colours', $this->EventType->CalendarColour->find('list',array('conditions'=>array('NOT',array('CalendarColour.colour_id' => $curColours))))); 

我使用數組$colours來填充下拉框。編寫find命令的正確方法是找到任何用戶未使用的顏色。

謝謝。

+0

也許我建議你用多寫任何類型的查詢?就像我在回答中所做的一樣。它只是讓它更容易理解:) – Ariaan

回答

13

你幾乎擁有了:

$this->EventType->CalendarColour->find('list', array(
    'conditions' => array(
    'NOT' => array(// There's your problem! :) 
     'CalendarColour.colour_id' => $curColours 
    ) 
) 
)); 
+0

謝謝,在一定程度上工作!但是當我添加一個用戶然後嘗試添加另一個用戶時,我收到一個錯誤,說未知列「Array」。 – user1563210