我在输入详细信息时无法从 Master table 获取 ID Table (Laravel 8)
I am Stuck to Get ID from Master table When Doing Input for Detail Table (Laravel 8)
你能帮帮我吗,抱歉我是 laravel 的新手。我想从 table master 获取 ID,但我只能将 ID 发送到 URL,我不知道如何获取该 ID 以保存在 table 详细信息中。
我有两个table,下面是第一个table(master):
public function up()
{
Schema::create('landings', function (Blueprint $table) {
$table->id();
$table->string('title')->nullable();
$table->text('content')->nullable();
$table->text('photo')->nullable();
$table->timestamps();
});
}
那么下面是第二个table(详细):
public function up()
{
Schema::create('landingmetas', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('landing_id');
$table->foreign('landing_id')->references('id')->on('landings')->onDelete('cascade')->onUpdate('cascade');
$table->string('meta_key')->unique();
$table->string('meta_value')->nullable();
$table->timestamps();
});
}
这是我的控制器,用于在着陆 table 中保存数据并完美运行:
public function store(Request $request)
{
$landings = new Landing();
$landings->title = $request->title;
$landings->save();
Session::flash('landing-add','Section telah dibuat.');
return redirect()->route('landing.createlm', $landings->id);
}
正如您在这一行中看到的那样 return redirect()->route('landing.createlm', $landings->id);
我重定向到 landing.createlm.blade.php(输入数据到第二个 table 的表单)。那时仍然按我想要的方式工作,但我很难将数据输入到 landingmetas,因为我不知道如何获得 url ID。这是我用于将数据存储到 landingmetas 的控制器(详细信息 table):
public function storelm(Request $request)
{
$lm = new Landingmeta();
$meta_key = strtolower($request->meta_key);
$meta_key = str_replace(" ", "", $meta_key);
$lm->meta_key = substr($meta_key, 0, 3)."-".substr($meta_key, 3);
$lm->landing_id = ???? (here id from master table)
$lm->save();
Session::flash('add-field','Field telah ditambahkan.');
return back();
}
这是我的路线:
/*Landing page*/
Route::get('/landings', [App\Http\Controllers\LandingController::class, 'index'])->name('landing.index');
Route::post('/landings', [App\Http\Controllers\LandingController::class, 'store'])->name('landing.store');
Route::get('/landings/{landing}/create', [App\Http\Controllers\LandingController::class, 'edit'])->name('landing.edit');
Route::delete('/landings/{landing}/destroy', [App\Http\Controllers\LandingController::class, 'destroy'])->name('landing.destroy');
/*Create Landingmetas*/
Route::get('landings/{landing}/createfield', [App\Http\Controllers\LandingController::class, 'createlm'])->name('landing.createlm');
Route::post('/landinglm', [App\Http\Controllers\LandingController::class, 'storelm'])->name('landing.storelm');
您可以像下面那样获取该 ID。
更新您的控制器:
public function storelm(Request $request, $landingId)
{
$lm = new Landingmeta();
$meta_key = strtolower($request->meta_key);
$meta_key = str_replace(" ", "", $meta_key);
$lm->meta_key = substr($meta_key, 0, 3)."-".substr($meta_key, 3);
$lm->landing_id = $landingId (here id from master table)
$lm->save();
Session::flash('add-field','Field telah ditambahkan.');
return back();
}
更新您的路线:
Route::post('/landinglm/{landingId}', [App\Http\Controllers\LandingController::class, 'storelm'])->name('landing.storelm');
终于解决了。为了解决这个问题,我只是在表单 blade 中添加 <input type="text" name="landing_id" value="{{ $request->landing }}">
,我从路由中获取参数并像这样 value="{{ $request->landing }}"
在输入文本字段上显示,在存储功能中我只是添加了这一行 $lm->landing_id = $request->landing_id;
.并且不要忘记这个函数调用 $request
:
public function createlm(Request $request)
{
$request->route('landing');
return view('admin.appearances.landingpages.create-field',compact('request'));
}
你能帮帮我吗,抱歉我是 laravel 的新手。我想从 table master 获取 ID,但我只能将 ID 发送到 URL,我不知道如何获取该 ID 以保存在 table 详细信息中。
我有两个table,下面是第一个table(master):
public function up()
{
Schema::create('landings', function (Blueprint $table) {
$table->id();
$table->string('title')->nullable();
$table->text('content')->nullable();
$table->text('photo')->nullable();
$table->timestamps();
});
}
那么下面是第二个table(详细):
public function up()
{
Schema::create('landingmetas', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('landing_id');
$table->foreign('landing_id')->references('id')->on('landings')->onDelete('cascade')->onUpdate('cascade');
$table->string('meta_key')->unique();
$table->string('meta_value')->nullable();
$table->timestamps();
});
}
这是我的控制器,用于在着陆 table 中保存数据并完美运行:
public function store(Request $request)
{
$landings = new Landing();
$landings->title = $request->title;
$landings->save();
Session::flash('landing-add','Section telah dibuat.');
return redirect()->route('landing.createlm', $landings->id);
}
正如您在这一行中看到的那样 return redirect()->route('landing.createlm', $landings->id);
我重定向到 landing.createlm.blade.php(输入数据到第二个 table 的表单)。那时仍然按我想要的方式工作,但我很难将数据输入到 landingmetas,因为我不知道如何获得 url ID。这是我用于将数据存储到 landingmetas 的控制器(详细信息 table):
public function storelm(Request $request)
{
$lm = new Landingmeta();
$meta_key = strtolower($request->meta_key);
$meta_key = str_replace(" ", "", $meta_key);
$lm->meta_key = substr($meta_key, 0, 3)."-".substr($meta_key, 3);
$lm->landing_id = ???? (here id from master table)
$lm->save();
Session::flash('add-field','Field telah ditambahkan.');
return back();
}
这是我的路线:
/*Landing page*/
Route::get('/landings', [App\Http\Controllers\LandingController::class, 'index'])->name('landing.index');
Route::post('/landings', [App\Http\Controllers\LandingController::class, 'store'])->name('landing.store');
Route::get('/landings/{landing}/create', [App\Http\Controllers\LandingController::class, 'edit'])->name('landing.edit');
Route::delete('/landings/{landing}/destroy', [App\Http\Controllers\LandingController::class, 'destroy'])->name('landing.destroy');
/*Create Landingmetas*/
Route::get('landings/{landing}/createfield', [App\Http\Controllers\LandingController::class, 'createlm'])->name('landing.createlm');
Route::post('/landinglm', [App\Http\Controllers\LandingController::class, 'storelm'])->name('landing.storelm');
您可以像下面那样获取该 ID。
更新您的控制器:
public function storelm(Request $request, $landingId)
{
$lm = new Landingmeta();
$meta_key = strtolower($request->meta_key);
$meta_key = str_replace(" ", "", $meta_key);
$lm->meta_key = substr($meta_key, 0, 3)."-".substr($meta_key, 3);
$lm->landing_id = $landingId (here id from master table)
$lm->save();
Session::flash('add-field','Field telah ditambahkan.');
return back();
}
更新您的路线:
Route::post('/landinglm/{landingId}', [App\Http\Controllers\LandingController::class, 'storelm'])->name('landing.storelm');
终于解决了。为了解决这个问题,我只是在表单 blade 中添加 <input type="text" name="landing_id" value="{{ $request->landing }}">
,我从路由中获取参数并像这样 value="{{ $request->landing }}"
在输入文本字段上显示,在存储功能中我只是添加了这一行 $lm->landing_id = $request->landing_id;
.并且不要忘记这个函数调用 $request
:
public function createlm(Request $request)
{
$request->route('landing');
return view('admin.appearances.landingpages.create-field',compact('request'));
}