Tôi đã làm việc với các tùy chọn pagphp pagoting trong 2 ngày. Tôi cần tạo một ĐỐI TÁC INNER để liệt kê một vài trường, nhưng tôi phải đối phó với tìm kiếm để lọc kết quả. Đây là phần mã trong đó tôi đối phó với các tùy chọn tìm kiếm bằng $this->passedArgs
function crediti() {
if(isset($this->passedArgs['Search.cognome'])) {
debug($this->passedArgs);
$this->paginate['conditions'][]['Member.cognome LIKE'] = str_replace('*','%',$this->passedArgs['Search.cognome']);
}
if(isset($this->passedArgs['Search.nome'])) {
$this->paginate['conditions'][]['Member.nome LIKE'] = str_replace('*','%',$this->passedArgs['Search.nome']);
}
và sau
$this->paginate = array(
'joins' => array(array('table'=> 'reservations',
'type' => 'INNER',
'alias' => 'Reservation',
'conditions' => array('Reservation.member_id = Member.id','Member.totcrediti > 0'))),
'limit' => 10);
$this->Member->recursive = -1;
$this->paginate['conditions'][]['Reservation.pagamento_verificato'] = 'SI';
$this->paginate['fields'] = array('DISTINCT Member.id','Member.nome','Member.cognome','Member.totcrediti');
$members = $this->paginate('Member');
$this->set(compact('members'));
INNER JOIN việc lành, nhưng $ this-> paginations bỏ qua mỗi $this->paginate['conditions'][] by $this->passedArgs
và tôi không thể có ý tưởng làm thế nào tôi có thể làm việc nó ra. Không có truy vấn nào trong gỡ lỗi, chỉ cần INNER JOIN
gốc. Ai đó có thể giúp tôi không? Cảm ơn bạn rất nhiều
Cập nhật: Không may mắn về điều đó. Tôi đã xử lý phần mã này trong nhiều giờ. Nếu tôi sử dụng
if(isset($this->passedArgs['Search.cognome'])) {
$this->paginate['conditions'][]['Member.cognome LIKE'] = str_replace('*','%',$this->passedArgs['Search.cognome']);
}
$this->paginate['conditions'][]['Member.sospeso'] = 'SI';
$this->Member->recursive = 0;
$this->paginate['fields'] = array(
'Member.id','Member.nome','Member.cognome','Member.codice_fiscale','Member.sesso','Member.region_id',
'Member.district_id','Member.city_id','Member.date','Member.sospeso','Region.name','District.name','City.name');
$sospesi = $this->paginate('Member');
mọi việc suôn sẻ, và từ debug tôi nhận được điều kiện đầu tiên và các điều kiện từ $this->paginate['conditions'][]['Member.cognome LIKE']
, như bạn có thể nhìn thấy mảng $this->passedArgs
Array
(
[Search.cognome] => aiello
)
Array $this->paginate['conditions'][]
(
[0] => Array
(
[Member.cognome LIKE] => aiello
)
[1] => Array
(
[Member.sospeso] => NO
)
Nhưng, nếu tôi viết tham gia với paginate, $this->paginate['conditions'][]
sẽ bỏ qua tất cả nội dung và cho tôi gỡ lỗi, chỉ $this->paginate['conditions'][]['Reservation.pagamento_verificato'] = 'SI';
Một chút thông tin khác. Nếu tôi đặt tất cả nội dung đang xử lý với $this->paginate['conditions'][]['Reservation.pagamento_verificato'] = 'SI';
trước $this->paginate JOIN
, không có nội dung nào trong số $this->paginate['conditions'][]
.
Có một giải pháp cho đây này: CakePHP 2.3.4 http://stackoverflow.com/questions/13645296/cakephp-paginate-conditions-on-join-table/ 16789816 # 16789816 –