#laravel
Вопрос:
В моем коде эта строка User::where('socialite_id', $socialite_id)->exists();
используется так много раз, что я хочу просто написать вокруг нее мутатор или sth, чтобы сделать эту строку короче.
Поэтому мне нужно создать мутатор, который проверяет, есть ли пользователь с тем же socialite_id
, что и у нового пользователя.
Я пришел с
public function hasUniqueSocialiteIdAttribute($value){
return !$this->where('socialite_id', $value)->exists();
}
Возможно, лучше поймать повторяющееся исключение и прервать его при ловле, но … нет.
Но эта штука не работает. Есть какие-нибудь предложения?
Ответ №1:
Область можно использовать для целей повторного использования:
public function scopeSocialiteId($query,$id) {
return $query->where('socialite_id', $id);
}
и затем
User::socialiteId($socialite_id)->exists();
Для получения дополнительной информации см. https://laravel.com/docs/8.x/eloquent#local-scopes