У вас Invoice должен зависеть от объектов User и Organisation. Соответственно внутри Invoice вы работаете с параметрами переданных объектов.
$uid = $this->User->getId();
$oid = $this->Organisation->getId();
Их нужно передать в конструкторе или отдельными методами. Код без комментов, ну уж очень не удобный тут редактор.
class Invoice
{
protected $User;
protected $Organisation;
public function __construct(User $User = null, Organisation $Organisation = null)
{
if (!is_null($User)) {
$this->setUser($User);
}
if (!is_null($Organisation)) {
$this->setOrganisation($Organisation);
}
}
public function setUser(User $User)
{
$this->User = $User;
}
public function setOrganisation(Organisation $Organisation)
{
$this->Organisation = $Organisation;
}
}
Такой подход поможет вам получать дополнительные поля объектов User и Organisation и не переживать, что вы поменяете таблицу.