Доступ к другой таблице через атрибут - PullRequest
1 голос
/ 25 апреля 2019

Я определил атрибут в модели, который получает данные из другой таблицы, но я не определил связь между этими двумя таблицами:

Модель 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, как в атрибуте?

1 Ответ

2 голосов
/ 25 апреля 2019

Нет, невозможно использовать отношения и использовать 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'] - локальные ключи

тогда вы можете использовать гдеHas

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...