Topic: Associazioni hasOne/belongsTo personalizzate
Ciao a tutti,
ho la necessita' di effettuare l'associazione tra due modelli senza utilizzare la chiave primaria.
Cerco di spiegarmi meglio:
Ho una tabella "roles":
id | name | code
----+----------------------+------
1 | Amministratore | AMMI
2 | Responsabile Tecnico | RTECe una tabella "people":
id | role_code | customer_id | first_name | last_name | phone_1 | phone_2 | email | website
----+-----------+-------------+------------+-----------+------------+------------+-------------------------+---------------------
2 | RTEC | 1 | Tizio | Caio | 1234567890 | 1234567890 | tizio@example.org |Come notate ho un campo in comune [people.role_code = roles.code], ed e' proprio questa (e solo questa) l'associazione che vorrei fare nel modello.
Se ve lo state chiedendo: no, non posso utilizzare la chiave primaria per fare questa cosa perche' "roles" e' una tabella pensata per essere modificabile
e l'admin della mia applicazione puo' modificarne i valori così come eliminare una o piu' voci, e in quest'ultimo caso perderei l'id associato.
Ora.. ho provato a fare una cosa del genere:
class Person extends AppModel {
var $name = 'Person';
var $hasOne = array(
'Role' => array(
'className' => 'Role',
'foreignKey' => false,
'conditions' => 'Person.role_code = Role.code'
)
);
}nella speranza che questo mi generasse una query del tipo:
SELECT ... FROM people LEFT JOIN roles ON (people.role_code = roles.code)e invece no!
Cake si ostina a voler utilizzare la chiave primaria creando una query del tipo:
SELECT ... FROM people LEFT JOIN roles ON (people.role_code = roles.code AND people.id = roles.person_id)Ho trovato un post di un tizio col mio stesso problema, ma che non ha avuto risposta:
http://groups.google.com/group/cake-php
222f6e5aea
Qualcuno ha mai avuto un problema analogo? Se si, come avete risolto?
Ah.. la versione di CakePHP che utilizzo e' la 1.2.0.6311
Grazie ![]()
Last edited by MiK (12-02-2008 17:37:31)