是否有可能/正確的表間關係只能走一條路?我有一個invoices
表,我需要在其他表中參考,如commission_payments
和membership_payments
,但invoices
表不需要commission_payment_id
或membership_payment_id
。換句話說,可能發生不同類型的交易,並且他們都可能附有發票,但發票不需要引用這些交易表。一對一的關係,只有在Laravel的一種方式
invoices commission_payments membership_payments
--------------- --------------------- ---------------------
-id -id -id
... -invoice_id -invoice_id
... ...
我已經爲每個表格創建了Eloquent模型。我在其他兩個型號上增加了hasOne
與invoices
的關係。
class CommissionPayment extends Model{
public function invoice(){
return $this->hasOne('App\Models\Invoice');
}
}
我又試圖訪問Comission付款的附加發票這樣的:
$com = CommissionPayment::first();
$com->invoice->id;
然後我得到這個錯誤:
SQLSTATE[42S22]: Column not found: 1054 Unknown column
'invoices.commission_payment_id' in 'where clause' (SQL: select * from `invoices`
where `invoices`.`commission_payment_id` = 15 and `invoices`.`commission_payment_id` is not
null limit 1)
爲什麼在invoices
表尋找commission_payment_id
場?我期望這樣的查詢排序:
SELECT * FROM `invoices` WHERE `id` = 23
/* id is fetched from the `invoice_id` field in the `commission_payments` table */
我需要爲每個將引用invoice_id的表添加一列嗎?目前這是兩個,但這可能會增長。另外,當爲佣金支付生成發票時,它不需要會員支付字段,所以我認爲它不應該到那裏。
這一個總是搞糊塗了,很能說明問題。 –
感謝您的解釋!這真的有幫助! – metamaker