2013-03-07 8 views
5

Próbuję dowiedzieć się, czy podobny rekord już istnieje w DB, zanim pójdę do przodu i zapisać rekord. Mam googleed i znalazłem to, co wygląda jak powinno działać, ale niestety nie działa. Jestem nowy w Cakephp i mogę "znaleźć prawidłowe zapytanie".Korzystanie stan jak w zapytaniu w CakePHP

$this->Tape->recursive = -1; 
$tapeexists = $this->Tape->find('all', array('condition'=>array('Tape.name LIKE'=>'blondie%'))); 
$this->set('output', $tapeexists); 

Gdybym print_r() wyniki w świetle widzę, że po prostu idzie i pobiera wszystkie wyniki w tej tabeli, z których żaden nie ma nazwy nic nawet zdalnie jak „Blondie”!

Odpowiedz

11

myślę, że po prostu błędnie conditions kiedy robi swoje znalezisko:

$tapeexists = $this->Tape->find('all', array('conditions'=>array('Tape.name LIKE'=>'blondie%'))); 

To powinno dać oczekiwanych rezultatów.

dla danego celu nie pozwalając duplikaty, polecam tworzenia reguły sprawdzania poprawności na modelu Tape. Istnieje specjalna wbudowana reguła zaprojektowana w celu uniknięcia duplikatów, więc prawdopodobnie lepiej byłoby z niej korzystać. Sprawdź więcej informacji na temat sprawdzania poprawności danych here - zobacz reguły walidacji isUnique rdzenia.

+0

Och. Poczuj knot. To mnie naprawdę denerwowało, będę musiał nauczyć się być bardziej ostrożny. Dziękuję również za sugestię dotyczącą zasady walidacji. Dobry pomysł! –

+0

Nie martw się, my wszyscy początkujący raz :) Czy należy oznaczyć jako odpowiedź zaakceptowana, więc trochę reputację? Dziękuję Ci! –