我在模型中定义了从另一个表获取数据的属性,但是我还没有定义这两个表之间的关系:
LeaseRequest模型
public function getSecurityDepositEntryAttribute() {
return Rent::where([
['property_id', $this->property_id],
['lease_request_id', $this->id],
['type', 'security_deposit_migration'],
])->orderBy('created_at', 'asc')->first();
}
我现在可以使用此属性过滤LeaseRequest
表吗?我已经尝试过,但是得到BadMethodCallException
:
LeaseRequest::whereHas('security_deposit_entry', function($query) {
$query->whereColumnNotIn('status', ['refund_in_process', 'refunded']);
})->get();
如果这不可能,我是否可以在预定义的where
子句中定义这两个表之间的关系,如in属性?
答案 0 :(得分:2)
不可能不必使用关系并使用compoships lib:
public function rent() {
return $this->hasOne(Rent::class,['lease_request_id','property_id'],['id','property_id'])
->where('type', 'security_deposit_migration')
->orderBy('created_at', 'asc');
}
['lease_request_id','property_id']是前键
['id','property_id']是本地密钥
然后您可以在哪里使用