как обновить подключение к модели пользователя, если установлено определенное APP_ENV

#laravel-5 #eloquent

#laravel-5 #красноречивый

Вопрос:

В настоящее время настраиваю изолированную среду для зеркального отображения моей живой среды, но мне нужно, чтобы для подключения к таблицам пользователей было установлено что-то другое, если для моего APP_ENV установлено значение «live»

Теперь в идеале в пользовательской модели я хотел бы сделать что-то вроде:

 class User extends Authenticatable
    public function __construct()
    {
        if (App::environment('live')) {
            protected $connection = 'ot20';
        }
    }
  

Но это не так. Есть идеи о том, как я это сделаю?

Citti

Комментарии:

1. есть ли способ расширить модель пользователя, где я мог бы провести сравнение на основе APP_ENV … аналогично тому, как я сделал это с помощью passport? laravel.com/docs/5.8/passport#overriding-default-models

Ответ №1:

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

 class User extends Authenticatable
    public function __construct(array $attributes = [])
    {
        parent::__construct($attributes);

        if (App::environment('live')) {
            $this->connection = 'ot20';
        }
    }
  

О вашем комментарии: Я не совсем понимаю, что вы имеете в виду, но вы можете создать пользовательскую модель пользователя и указать Laravel использовать ее вместо этого, установив providers.users.model in config/auth.php .

Комментарии:

1. интересно. Получение «сообщения»: «Неопределенная переменная: соединение», » однако.

2. Что такое трассировка стека? Ваша __construct() реализация должна принимать те же параметры, что и родительский метод ( array $attributes = [] ), и вызывать его с parent::__construct($attributes) помощью .