Вставить значение в существующее имя ключа в laravel

#mysql #laravel

#mysql #laravel

Вопрос:

 public function store($request)
    {
        return DB::table('website_setup')->select('header_logo')->insertGetId([
            'value' => $request->header_logo   
        ] 
        );   
    }
 

таблица

  Schema::create('website_setup', function (Blueprint $table) {
                $table->id();
                $table->string('key');
                $table->longText('value')->nullable();
                $table->timestamps();
            });
 

И некоторые ключи уже созданы в таблице базы данных

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

1. Вы хотите сказать, обновить значение для существующего ключа?

2. ДА. сначала есть нулевое значение

3. хорошо, я понимаю, и я думаю, что вы новичок в laravel, поэтому предлагаю проверить, как работает Laravel eloquent model и updateOrCreate метод.

4. попробуйте эту модель::где(‘key’, ‘header_logo’)-> обновить([‘value’ => $request-> header_logo])

Ответ №1:

Вы можете использовать upsert() метод для вставки новых записей и обновления существующих записей новыми значениями, которые вы укажете.

 public function store($request)
{
        return DB::table('website_setup')->upsert([
            'value' => $request->header_logo   
        ]);   
}
 

Или использовать update() . Подобно методу insert, метод update принимает массив столбцов и значений, которые указывают столбцы, подлежащие обновлению.

 public function store($request, $id)
{
    return DB::table('website_setup')
              ->where('id', $id)
              ->update([
                'value' => $request->header_logo   
              ]);   
}