У меня есть три модели: Пользователь, Контакт и VerifyContact со следующими отношениями:
Модель пользователя:
public function contacts()
{
return $this->morphOne('App\Contact', 'contactable');
}
public function contact_verifications()
{
return $this->hasManyThrough(VerifyContact::class, Contact::class, 'contactable_id', 'user_id', null, 'contactable_id');
}
Модель контакта:
public function contactable()
{
return $this->morphTo();
}
public function verifications(){
return $this->hasMany('App\VerifyContact');
}
И Я получаю подтвержденные контакты следующим образом:
User::find($id)->first()->contact_verifications
Запрос на проверку проверенных контактов выглядит следующим образом:
SELECT `verify_contacts`.*,
`contacts`.`contactable_id` AS `laravel_through_key`
FROM `verify_contacts`
INNER JOIN `contacts`
ON `contacts`.`contactable_id` = `verify_contacts`.`user_id`
WHERE `contacts`.`contactable_id` = ? [9]
Возвращает одинаковые проверенные контакты для всех пользователей. Как изменить contact_verifications()
для получения правильных результатов? Первая запись в таблице users
имеет идентификатор 9.