Установить динамический атрибут на модели Laravel - PullRequest
0 голосов
/ 18 января 2019

То, что я пытаюсь сделать, - это установить атрибут (активный) в моей модели перед первым созданием.

Я хочу избежать этого жестко закодированного кода с активным пользователем:

$user["firstname"] = "John";
$user["lastname"] = "Doe";
$user["active"] = 1;
UserModel::create($user);

Я бы хотел что-то вроде:

$user["firstname"] = "John";
$user["lastname"] = "Doe";
UserModel::active()->create($user);

За кулисами я хочу, чтобы метод active () установил для «активного» столбца / атрибута значение 1. Как я могу это сделать?

1 Ответ

0 голосов
/ 19 января 2019

Функция make модели создает ее в памяти и не сохраняет ее в базе данных

Итак, что вы можете сделать:

$newUser["firstname"] = "John";
$newUser["lastname"] = "Doe";
UserModel::make($newUser)->activate()->save();

Ваша active функция будет выглядеть так:

public function activate()
{
    $this->active = 1;
    return $this;
}

Таким образом, пользователь создается в памяти, затем устанавливается в активное состояние и затем сохраняется в базе данных.

Если вы хотите сделать больше с пользователем, прежде чем сохранить его, вы можете сделать это следующим образом:

$newUser["firstname"] = "John";
$newUser["lastname"] = "Doe";
$activeUser = UserModel::make($newUser)->activate();
//do stuff with $activeUser;
$activeUser->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...