我刚刚开始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] 删除。
我来说两句