Wydaje mi się, że nie potrzebujesz wspólnej tabeli dla faktur, nadawców i odbiorców. Możesz przechowywać te klucze obce w tabeli faktur. Twoje relacje byłyby wtedy:
<?php
class Invoice extends AppModel {
public $belongsTo = array(
'Sender' => array(
'className' => 'Account',
'foreignKey' => 'sender_id'
),
'Receiver' => array(
'className' => 'Account',
'foreignKey' => 'receiver_id'
)
);
}
Jeśli chcesz następnie odróżnić faktury, które zostały wysłane lub nie, możesz również dodać kolumnę o nazwie status_id
lub podobny i zapisz inny klucz obcy w nowych statuses
tabeli z kolumną ID i nazwą oraz następującymi przykładowymi danymi:
id name
== ====
1 Draft
2 Sent
Oraz wszelkie inne statusy, których możesz potrzebować.