2013-03-07 3 views
5

Я пытаюсь выяснить, существует ли аналогичная запись в БД, прежде чем я начну и сохраню запись. Я искал googled и нашел, что похоже, что он должен работать, но, к сожалению, нет. Я новичок в cakephp и могу «выяснить правильный запрос».Использование условия LIKE в запросе в cakephp

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

Если я print_r() результатов в представлении я вижу, что он просто идет и получает все результаты в этой таблице, ни одна из которых имеет имя ничего даже отдаленно, как «блонди»!

ответ

11

Я думаю, вы просто неправильно conditions, когда делаете свою находку:

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

Это должно дать вам ожидаемых результатов.

Для вашей цели не допускать дубликатов, я бы рекомендовал создать правило проверки на модели Tape. Существует специальное встроенное правило, предназначенное для избежания дубликатов, поэтому вам, вероятно, будет лучше использовать его. Проверьте дополнительную информацию о проверке данных here - ознакомьтесь с правилом валидации ядра isUnique.

+0

О, дорогой. Почувствуй фитиль. Меня это очень раздражало, мне нужно научиться быть более осторожным. Спасибо за предложение относительно правила проверки. Хорошая идея! –

+0

Не беспокойтесь, мы все были новичками один раз :) Не могли бы вы отметить ответ так, как принято, чтобы я получил некоторую репутацию? Спасибо! –

Смежные вопросы