ich steh mal wieder etwas auf dem Schlauch.
Folgendes Problemchen:
Ich habe ein Model User, das eine hasOne-Verknüpfung zum Model Applicant hat.
Der Applicant hasMany Application (da man sich ja mehrfach bewerben kann).
Der User wiederum hat nochmals eine hasMany-Verknüpfung zur Application.
Grund: ein User _kann_ Applicant sein, muss er aber nicht. "Normale" User können nämlich verantwortlich für eine Application sein. Sprich, Bewerber und Sachbearbeiter werden in einer Tabelle gehalten, allerdings durch ACL's und das Applicant-Objekt differenziert.
Nun versuche ich mich gerade an einer Abfrage, die es mir erlaubt, für den angemeldeten User alle Bewerbungen zu finden, die ihm zugeordnet sind (Application.user_id). Kein Problem. Dazu möchte ich nun folgende Daten anzeigen:
- Name des Bewerbers (sollte User.firstname / User.lastname sein...)
- Stellentitel (funktioniert via Objekt Vacancy)
- Eingangsdatum (Application.created)
- Status (Application.status_id)
Das Problem ist nun der Name des Bewerbers, da er ebenfalls aus dem User-Model gelesen werden muss, neben den Userdaten des angemeldeten Users. Bislang mache ich zwei Abfragen, um den Namen des Bewerbers nachzulesen, hätte aber gerne alle in einem find('all') abgedeckt.
Hier mal mein Coding:
- Code: Alles auswählen
...
$applicationParams = array (
'conditions' => array (
'Application.user_id' => $user['User']['id'],
'Status.context' => 'Application'
),
'fields' => array (
'Applicant.id',
'Applicant.user_id',
'Status.id',
'Status.statusvalue',
'Application.created',
'Vacancy.title',
'Applicant.user_id',
'User.firstname',
'User.lastname'
),
'order' => 'Application.created'
);
$applications = $this->Applicant->Application->find('all', $applicationParams);
foreach($applications as $application) {
$applicantParams = array(
'conditions' => array (
'User.id' => $application['Applicant']['user_id']
),
'fields' => array (
'Applicant.id',
'User.firstname',
'User.lastname'
)
);
$applicants = $this->find('all', $applicantParams);
}
...
Jemand ne Idee, wie ich das zusammenfassen könnte?
Thx für Eure Hilfe,
Tobi