2012-11-06 34 views
5

Tôi có hai bảng gọi calendar_colour và dễ sử dụng,CakePHP phức tạp tìm "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) 
) 

Trong add chức năng của người sử dụng tôi phải chọn một màu từ hộp thả xuống. Nhưng tôi muốn đưa vào danh sách thả xuống bằng các màu chưa được người dùng trước đó chụp. Tôi đã thử sử dụng lệnh find nhưng dường như nó sai.

$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))))); 

Tôi sử dụng mảng $colours để điền vào hộp thả xuống. Cách chính xác để viết lệnh tìm thấy những màu không được sử dụng bởi bất kỳ người dùng nào.

Cảm ơn.

+0

Tôi có thể đề nghị bạn sử dụng nhiều dòng để viết bất kỳ loại truy vấn? Như tôi đã làm trong câu trả lời của tôi. Nó chỉ làm cho nó dễ dàng hơn để hiểu :) – Ariaan

Trả lời

13

Bạn gần như đã có nó:

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

Cảm ơn rằng đã làm việc đến một mức độ! Nhưng tôi nhận được một lỗi nói rằng cột không rõ "Array" khi tôi thêm một người dùng và sau đó đã cố gắng để thêm một số khác. – user1563210

Các vấn đề liên quan