gpt4 book ai didi

laravel - Eloquent 中的重复 key 更新

转载 作者:行者123 更新时间:2023-12-04 22:57:42 25 4
gpt4 key购买 nike

我刚开始使用 laravel,我想做的就是获取 以下查询工作 在 Eloquent :

INSERT INTO geschichte (geschichte_id, 
geschichte_text1,
geschichte_text2,
geschichte_text3)
VALUES (:geschichte_id,
:geschichte_text1,
:geschichte_text2,
:geschichte_text3)
ON DUPLICATE KEY
UPDATE geschichte_id = :geschichte_id,
geschichte_text1 = :geschichte_text1,
geschichte_text2 = :geschichte_text2,
geschichte_text3 = :geschichte_text3;

Controller 功能
public function alterGeschichte(Request $request)
{
$geschichte1 = new Geschichte;
$geschichte2 = new Geschichte;
$geschichte3 = new Geschichte;

$geschichte1 = Geschichte::updateOrCreate(
['id' => 1],
['geschichte_text1' => $request->geschichte_text1]
);
$geschichte2 = Geschichte::updateOrCreate(
['id' => 2],
['geschichte_text2' => $request->geschichte_text2]
);
$geschichte3 = Geschichte::updateOrCreate(
['id' => 3],
['geschichte_text3' => $request->geschichte_text3]
);

$geschichte1->save();
$geschichte2->save();
$geschichte3->save();

return redirect('/geschichte');
}

问题更详细
我无法让“重复 key 更新”部分起作用。
每次更新时总会创建一个新条目。我希望每个条目的 id 始终相同,只需用该 id 覆盖旧条目。
我将非常感谢任何形式的帮助。我从几个小时开始就在努力解决这个问题......

更新
<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateGeschichteTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('geschichte', function (Blueprint $table) {
$table->increments('id');
$table->text('geschichte_text1');
$table->text('geschichte_text2');
$table->text('geschichte_text3');
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('geschichte');
}
}

最佳答案

看起来您在希望唯一的列上没有唯一的键设置。为了使用on duplicate key update ,您将需要它,以便您的数据库服务器知道它是否需要插入或更新。

不幸的是,Laravel 不支持 on duplicate key update句法。这将很有用,因为它会尝试插入,如果它已经在表中,那么它将在一个查询中相应地更新列。

使用 Laravel 的 updateOrCreate方法,它首先查询表以查看是否需要生成插入或更新语句,然后相应地进行。您不会获得仅运行一个查询的优势,但同时,Laravel 正在处理所有额外的逻辑,因此这是一个轻微的权衡。

关于laravel - Eloquent 中的重复 key 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38308555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com