@Djonson86
Нечем похвастаться.

Как вернуть модель, но не записывать в базу методом firstOrNew, firstOrCreate или подобным?

Добрый вечер. Грубо говоря, есть примерно такой код.

public function GenerateUser($first_name,  $last_name)
    {
        $isset = User::where('first_name', $first_name)
            ->where('last_name', $last_name)->first();
        $response = null;
        if (isset($isset)) {
            $response = User::where('first_name', $first_name)
                ->where('last_name', $last_name)->first();
        } else {
            $response = new User();
            $response->first_name = $first_name;
            $response->last_name = $last_name;
            $response->save();
        }
        return response()->json($response);
    }


Работать должно следующим образом. Приходят 2 параметры, проверяем в базе в таблице users есть ли там уже такой юзер. Если есть, возвращаем модель, ничего в базу не пишем. Если нет, возвращаем модель и пишем ее в базу. Работает этот кусок кода нормально, но надо сделать как то с помощью вышеперечисленных методов, чтоб уменшить все это дело и повысить читаемость. Пробовал по всякому, примерно так

public function GenerateUser($first_name, $last_name)
    {
        $response = User::firstOrNew([
                'first_name' => $first_name,
                'last_name' => $last_name,
            ]);
        $response->save();
        return response()->json($response);
    }

Возвращает модель, но и пишет в базу в есть ли там такая запись или нет. Без save() не сохраняет. Пробовал другие подобные методы, результат примерно такой же. Как это решить?
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
New_Horizons
@New_Horizons
Бред:
Ну так firstOrCreate же, нет? возвращает, либо создаёт и возвращает

public function GenerateUser($first_name, $last_name)
{
	$user = User::firstOrCreate([
		'first_name' => $first_name,
		'last_name' => $last_name,
	]);

	return response()->json($user);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы