Has_many şartı ile CakePHP Sayfalandırması

1 Cevap php

Yani bir kullanıcı tablo ve Kullanıcı hasMany Geçmişleri ile Tarihçesi tablo var, ve ben kullanıcı masaya sayfalandırma uygulamak çalışıyorum.

Benim sorunum arama var, ve bir arama yapabilirsiniz bazı şeyleri Geçmiş tablosunda şeyler olmasıdır. HasMany tarafından ilişkili tablodaki verilere dayalı Sayfalandırması sonuçları filtrelemek için bir yolu var mı? (Ben bir şey eksik sürece?) Başlangıçta bir çözüm gibi görünüyordu Containable, hangi tür filtre ancak ilişkili verilerin değil, kayıtlar kendilerini alımı içinde verir

Herkes bu önce çözmek zorunda kaldı?

1 Cevap

Kullanıcılar tablosunun 1, ve tüm dernekler almak için geçmişlerini masaya birini: Bir hasMany ilişki bu yana, o Kek 2 ayrı sorgulama yapmaya ihtiyacınız olacak demektir. Tarihi veriler 2. sorguda kadar alındığını olmadığından, daha sonra 1 sorgu ile filtre edilemez WHERE Tarih modelinde bulunan alanlar için koşullar.

Bu sorunu çözmek için, iki şeyden birini yapabilirsiniz:

  1. (Tarihçe belongsTo Kullanıcı beri, sadece 1 sorgu yapılacaktır anlam) Containable kullanarak Geçmişi sayfalamayı gerçekleştirin.

  2. Bir ad-hoc artık bir hasMany ilişki olduğunu, böyle Tarihine katılmak gerçekleştirmek dışında, Kullanıcı üzerine zaten yapıyoruz yolu pagination gerçekleştirin.

örneğin:

$this->User->bindModel(array('hasOne' => array('History')));
$this->paginate['User']['contain'][] = 'History';
$this->paginate('User', array('History.some_field' => 'some_value'));