是否有可能/正确的表间关系只能走一条路?我有一个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