雄辩地在重复密钥更新

施韦西

我刚刚开始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;

控制器功能

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');
}

更详细地讲,

我无法使“重复键更新”部分起作用。
每当我更新时,总会有一个新条目创建。我希望每个条目的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');
    }
}
亚历克斯·哈里斯

控制器中的大多数内容都不是必需的。对于为什么要执行控制器中所示的任务,我也有点担心您使用的数据库结构。以下应该是您所需要的:

public function alterGeschichte(Request $request)
{
    Geschichte::updateOrCreate(
       ['id' => 1],
       ['id' => 1, 'geschichte_text1' => $request->geschichte_text1]
    );

    Geschichte::updateOrCreate(
       ['id' => 2],
       ['id' => 2, 'geschichte_text2' => $request->geschichte_text2]
    );

    Geschichte::updateOrCreate(
       ['id' => 3],
       ['id' => 3, 'geschichte_text3' => $request->geschichte_text3]
    );

    return redirect('/geschichte');
}

如果这些记录正在创建新记录,则很可能是因为没有具有这些ID的记录。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

雄辩地更新所有行

来自分类Dev

在laravel 5.0雄辩的重复键更新

来自分类Dev

在重复密钥上更新组合密钥

来自分类Dev

插入...在重复密钥更新[IF]上

来自分类Dev

使用JdbcBatchItemWriter更新重复密钥

来自分类Dev

是否可以雄辩地从单个列中选择重复的值?

来自分类Dev

重复密钥更新不会更新,但会导致重复错误

来自分类Dev

laravel更新,雄辩地消除一对多关系

来自分类Dev

Laravel雄辩地更新一对多关系

来自分类Dev

Laravel雄辩地更新一对多关系

来自分类Dev

在更新之前雄辩地获得编辑过的属性

来自分类Dev

在重复密钥更新中将CSV导入MySQL

来自分类Dev

等价于重复密钥更新的水线ORM

来自分类Dev

插入...在重复密钥更新问题上

来自分类Dev

MySQL错误:写入或更新时重复密钥

来自分类Dev

MySQL-...关于重复密钥未更新

来自分类Dev

如何进行重复密钥更新

来自分类Dev

使用WHERE进行重复密钥更新

来自分类Dev

在相同的ID中插入重复的密钥更新

来自分类Dev

在重复的密钥更新不起作用

来自分类Dev

MySQL:重复密钥更新不起作用

来自分类Dev

Laravel雄辩地错误地更新了每一行的值

来自分类Dev

MySQL插入的更新字段...在重复密钥更新时

来自分类Dev

Laravel雄辩地投票

来自分类Dev

雄辩地嵌套“ AND OR”查询

来自分类Dev

Laravel雄辩地循环

来自分类Dev

Laravel雄辩地投票

来自分类Dev

雄辩地使用别名

来自分类Dev

MySQL在非主密钥的重复更新上插入