通过属性访问另一个表

时间:2019-04-25 15:13:01

标签: laravel

我在模型中定义了从另一个表获取数据的属性,但是我还没有定义这两个表之间的关系:

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属性?

1 个答案:

答案 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']是本地密钥

然后您可以在哪里使用