Вы можете создать собственную модель пивота и назначить для нее аксессор get.Он избегает использования большего количества запросов, чем нужно.
class QualificationsPivot extends Pivot{
public function getValidAttribute(){
return $this->attributes['valid_until'] <= $this->atttributes['days_before_warning']
}
}
Пока вы изменяете метод отношений в вашей пользовательской модели, чтобы включить использование ():
return $this->belongsToMany(Qualifications::class, 'qualifications_pivot_table_name', 'user_id', 'qualifications_id')
->using(QualificationsPivot::class)
->withPivot(['valid_until', 'days_before_warning']);
Это должно позволить вам позвонить:
$this->Qualifications->where('pivot.valid', true);
Чтобы получить все квалификации, в которых атрибут с мутировавшим атрибутом имеет значение true.Я не уверен, как выглядит ваш метод отношений, но я предполагаю, что вы стремитесь загрузить квалификации, используя метод with ().Я протестировал его на одной из моих моделей Pivot, и, похоже, он работает нормально.Дайте мне знать, если у вас есть дополнительные вопросы.См. Некоторые ссылки ниже:
с использованием метода (): https://medium.com/@codebyjeff/custom-pivot-table-models-or-choosing-the-right-technique-in-laravel-fe435ce4e27e
Некоторые вопросы SO, которые я обнаружил, которые могут быть полезны для этого (мутаторы на моделях сводной оси): мутанты laravel / eloquent/ accessors в сводной таблице
Редактировать: Также сталкивался с этим: https://laracasts.com/discuss/channels/eloquent/how-to-define-an-accessor-for-a-pivot-table-attribute?page=1
говорится, что вы должны просто иметь возможность предоставить аксессор в родительской модели (пользователь),Я не проверял это, хотя, но это может быть более простой вариант, если вам не нужны другие функции, которые идут с настраиваемой моделью сводной диаграммы.