Witam,


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:

  1. class Model_User extends... {
  2.  
  3. $_has_one = array('car' => array('foreign_key' = 'id')); // Tu mogę zmienić drugą częśćzapytania JOIN ... ON... * (patrz niżej)
  4.  
  5. $_load_with = 'cars';
  6. }



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:
  1. SELECT u.*, c.marka FROM users u
  2. LEFT JOIN cars c ON ([u][b]u.car_id = c.id[/b][/u])
  3. WHERE [u][b]u.id[/b][/u] = x


A ORM zawsze mi składa:
  1. SELECT u.*, c.marka FROM users u
  2. LEFT JOIN cars c ON ([b]u.id = c.id[/b])
  3. 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.