Korzystam z K3.2 o ORM'a który tam jest zaproponowany.
Pytanie jednak wydaje mi się błahe, ale do tej pory nie rozwiązane, a źródeł w sieci znaleźć nie mogę.
Mam bazę danych:
* users (dane użytkowników), klucze: id (jak zaleca nazewnictwo ORMa) i car_id
* cars (samochody użytkowników), klucze: id (jak zaleca nazewnictwo ORMa) i user_id
Opis:
Każdy user może mieć jedno auto lub nie mieć w ogóle. Nie może mieć dwóch w jednym momencie. Stare samochody (z ktorych nie korzysta) są dalej zapisane w bazie danych i mają jego ID (jako user_id) dzięki czemu łatwo można zrobić kwerendę wszystkich samochodów które posiadał (WHERE cars.user_id = x).
W związku z tym, relacją podstawową, ktora jednoznacznie identyfikuje użytkownika i jego samochód jest: users.car_id = cars.id (a nie jest nią: users.id = cars.user_id!).
User jeśli pozbędzie się samochodu to wyczyści się tylko w tabeli users pole 'car_id'.
PROBLEM:
class Model_User extends... { $_load_with = 'cars'; }
Nie chcę użyć czystego zapytania, bo chcę mieć dostęp do $user->car->marka. Ponadto zawsze kiedy pobieram użytkownika, zawsze pobieram jego samochód (nie będzie nigdy na stronie innej możliwości).
* Czyli chcę uzyskać za pomocą ORMa:
SELECT u.*, c.marka FROM users u LEFT JOIN cars c ON ([u][b]u.car_id = c.id[/b][/u]) WHERE [u][b]u.id[/b][/u] = x
A ORM zawsze mi składa:
SELECT u.*, c.marka FROM users u LEFT JOIN cars c ON ([b]u.id = c.id[/b]) WHERE u.id = x
czyli potrzebne mi uzyskanie "klucza głównego do relacji" z cars: car_id, a wszędzie indziej w połączeniach ma być users.id.