FindOrCreate в laravel

Я хочу создать данные, но если данные уже в базе данных, они обновятся. но если данных еще нет в базе данных, будут созданы новые данные.

это мой контроллер

public function store(Request $request)
{      
    $real = SpentTime::findOrCreate([
        'plan_id' => $request->get ('plan_id'),
        'daily_spent_time' => $request->get ('daily_spent_time'),
        'daily_percentage' => $request->get ('daily_percentage'),
        'reason' => $request->get ('reason')
    ]);

    return redirect()->route('real.index', compact( 'reals'));
}

это моя модель

public static function findOrCreate($plan_id)
{
    $real = SpentTime::find($plan_id);
    return $real ?: new SpentTime;
}

когда я делаю данные уже в базе данных, данные не обновляются.

Используйте updateOrCreate(): laravel.com/docs/eloquent#inserting-and-updating-models

Jonas Staudenmeir 10.10.2018 06:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
1
10 844
2

Ответы 2

Попробуй это

public function store(Request $request)
{      
    $real = SpentTime::findOrCreate($request->get('plan_id'),[
        'plan_id' => $request->get ('plan_id'),
        'daily_spent_time' => $request->get ('daily_spent_time'),
        'daily_percentage' => $request->get ('daily_percentage'),
        'reason' => $request->get ('reason')
    ]);

    return redirect()->route('real.index', compact( 'reals'));
}

public static function findOrCreate($plan_id,$data)
{
    $real = static::where('plan_id',$plan_id)->first();
    if (is_null($real)) {
        return static::create($data);
    } else {
        return $real->update($data);
    }
}

ошибка ошибки

Na Koriah 10.10.2018 08:05

@NaKoriah проверьте, я обновил свой ответ

Jignesh Joisar 10.10.2018 08:08

что случилось ? 3.bp.blogspot.com/-7TLnRJtLOwo/W72aKhRlP9I/AAAAAAAAA4U/…

Na Koriah 10.10.2018 08:22

@NaKoriah снова попробуй

Jignesh Joisar 10.10.2018 08:24

ошибка Undefined variable: record

Na Koriah 10.10.2018 08:27

оно работает. большое спасибо, сэр. просто замените $record на $real

Na Koriah 10.10.2018 08:44

@NaKoriah добро пожаловать

Jignesh Joisar 10.10.2018 08:57

Попробуйте вот так

$user = User::firstOrNew(array('name' => Input::get('name')));
$user->foo = Input::get('foo');
$user->save()

в моем контроллере?

Na Koriah 10.10.2018 08:32

@NaKoriah да, вам нужно добавить это в свой контроллер

Lakhwinder Singh 10.10.2018 08:38

ничего не меняется. нечего обновлять

Na Koriah 10.10.2018 08:40

это внутренняя функция laravel, вы можете прочитать это здесь https://laravel.com/docs/5.7/eloquent#retrieving-single-mode‌​ls и найти этот firstOrCreate.

Lakhwinder Singh 10.10.2018 08:41

Другие вопросы по теме