【发布时间】:2020-09-14 08:20:37
【问题描述】:
我有一个名为“requests”的表用于处理客户的请求,它可以由不同类型的用户(供应商、客户)创建。
知道每种类型的用户都有自己的表,我想在“请求”和createdBy用户之间建立关系,但是这种关系是有条件的,所以如果user_type = 1,createdBy用户是供应商,而如果 user_type = 2,则 createdBy 用户是客户。
这是我迄今为止尝试过的:
public function createdBySupplier()
{
return $this->belongsTo(Supplier::class, 'createdBy')
->distinct()
->select('suppliers.*')
->join('requests', function($join) {
$join->on('requests.createdBy', '=', 'suppliers.id')
->where('requests.user_type', '=', 1);
});
}
public function createdByCustomer()
{
return $this->belongsTo(Customer::class, 'createdBy')
->distinct()
->select('customers.*')
->join('requests', function($join) {
$join->on('requests.createdBy', '=', 'customers.id')
->where('requests.user_type', '=', 2);
});
}
我想要的是只有一个名为“createdByUser()”的关系,它应该知道如何根据“user_type”属性处理关系,有什么想法吗?
【问题讨论】:
标签: eloquent eloquent-relationship