#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)
помощью .