2013-03-07 41 views
5

Tôi đang cố gắng tìm hiểu xem một bản ghi tương tự đã tồn tại trong DB trước khi tôi tiếp tục và lưu bản ghi. Tôi đã googled và tìm thấy những gì có vẻ như nó nên làm việc nhưng tiếc là không. Tôi mới dùng cakephp và có thể 'tìm ra truy vấn đúng.Sử dụng điều kiện LIKE trong truy vấn trong cakephp

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

Nếu tôi print_r() kết quả trong giao diện tôi có thể thấy rằng nó chỉ đi và nhận được tất cả các kết quả trong bảng đó, không ai trong số đó có một cái tên bất cứ điều gì, ngay cả từ xa như 'blondie'!

Trả lời

11

Tôi nghĩ rằng bạn chỉ đơn giản là sai chính tả conditions khi thực hiện tìm bạn:

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

Điều đó sẽ cung cấp cho bạn những kết quả mong đợi.

Vì mục tiêu cụ thể của bạn không cho phép trùng lặp, tôi khuyên bạn nên tạo quy tắc xác thực trên mô hình Tape. Có một quy tắc dựng sẵn cụ thể được thiết kế để tránh trùng lặp, vì vậy bạn có thể nên sử dụng nó tốt hơn. Xem thêm thông tin về xác thực dữ liệu here - xem quy tắc xác thực lõi isUnique.

+0

Xin lỗi. Cảm thấy bấc. Điều đó thực sự làm tôi khó chịu, tôi sẽ phải học cách cẩn thận hơn. Cảm ơn bạn đã đề xuất về quy tắc xác thực. Ý tưởng tốt! –

+0

Đừng lo, chúng tôi đều là những người mới bắt đầu một lần :) Bạn có thể đánh dấu câu trả lời như được chấp nhận để tôi nhận được một số danh tiếng? Cảm ơn bạn! –

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