Meine Anforderung ist es, auf 2 verschiedene Tabellen zu suchen: Tierärzte und Kliniken. Es könnte eine Beziehung zwischen ihnen geben, d. H. Ergebnis sollte Kliniken haben 'a' im Namen und Tierärzte haben 'a' in ihnen. Tierärzte könnten mit Kliniken verwandt sein oder nicht. Momentan mache ich folgendes. Gibt es eine Methode, um 2 Abfragen zu vermeiden, die mir auch helfen können, den Cachephp Paginierungshelfer zu benutzen?Single Pagination auf mehreren Modellen in CakePHP
$this->paginate = array(
'Vet' => array(
'conditions' => $conditions,
'fields' => array('Vet.id', 'Vet.name', 'Vet.professionnal_address', 'phone_number', 'Vet.email', 'Vet.type', 'Vet.latitude', 'Vet.longitude','Vet.city','Vet.clinic_id','Vet.zipcode'),
'joins' => array(
array(
'table' => 'vet_appointment_types',
'alias' => 'VetAppointmentType',
'type' => 'LEFT',
'conditions' => array(
'Vet.id = VetAppointmentType.vet_id',
)
)
),
'limit' => $limit,
'group' => array(
'Vet.id'
),
'order' => array(
'Vet.name' => 'ASC'
)
),
'Clinic' => array(
'conditions' => $conditions1,
'fields' => array('Clinic.*'),
'limit' => $limit,
'order' => array(
'Clinic.name' => 'ASC'
)
)
);
$results = $this->paginate('Vet');
$results2 = $this->paginate('Clinic');
Ich habe versucht, durch die Standard-Paginierung Komponente in einem nicht Datenbank-Modell erstreckt und Vereinigung mit, aber die Datenbankstruktur in einem wenig komplex so nicht Union nutzen kann. Außerdem denke ich, dass die Implementierung eines temporären tabellenbasierten Modells eine Option wäre, aber da es für die Suche verwendet wird, wie genau es umgesetzt werden soll, kann ich nicht denken. Jede Hilfe wäre + 1'd;)
Wenn Sie Union oder eine Ansicht nicht verwenden können, haben Sie eine harte Zeit, nicht zugeordnete Daten aus zwei Tabellen zu paginieren. Ich würde zu diesem Zweck einen Suchindex mit Elastic Search implementieren. – burzum
Wenn ich eine temporäre Tabelle verwenden würde, um Daten von beiden Tabellen zu speichern und dann zu suchen, wäre das eine mühsame Methode? – Sp0T
Es würde, und wenn sich Daten ändern, müssten Sie die temporäre Tabelle ändern. Vielleicht solltest du in eine Datenbankansicht schauen? – MBosman