Penso che questo sia uno schema comune, ma non riesco a trovare l'elegante modo CakePHP di farlo. L'idea è di rimuovere i valori da una lista che è già stata scelta. Per usare un esempio dal libro Cake:Cakephp 3 NOT IN query
table Students (id int, name varchar)
table Courses (id int, name varchar)
table CoursesMemberships (id int, student_id int, course_id int, days_attended int, grade varchar)
Tutto quello che voglio fare è creare una query che restituisce i corsi che un dato studente non ha ancora firmato per, molto probabilmente per popolare una select discesa.
Se non fossi usando torta, mi piacerebbe fare qualcosa di simile a
select * from Courses where id not in
(select course_id from CoursesMemberships where student_id = $student_id)
O forse un equivalente NON ESISTE clausola, o outer join inganno, ma si ottiene l'idea.
Sono perplesso su come farlo elegantemente in Cake. Mi sembra che questo sarebbe un bisogno comune, ma ho cercato per un po ', così come provato alcune idee di query, senza successo.
Sono riuscito a farlo funzionare utilizzando un meccanismo più complesso (vedere i commenti sopra). Ma quello che stavo cercando è un modo di fare questa query in un colpo solo, piuttosto che interrogare per i record esistenti, costringerli in un array, quindi usare il precedente. –
vedere questo esempio: http://book.cakephp.org/3.0/en/orm/query-builder.html#subqueries – user3082321