[英]Laravel eloquent: updating a parent record and creating a new record in another table with one form
[英]Laravel is creating new record instead of updating old one
我有一個行星概覽,現在我想讓你可以編輯行星,但不是更新現有的數據庫記錄,我的 Laravel 會創建一個新的數據庫記錄。 我在互聯網上查看,我發現我不是唯一一個遇到這個問題的人,並試圖自己解決它。 我嘗試使用
$member->update($request->only(['name','description', 'size_in_km', 'solar_systems_id']);
我也試過單獨做,但沒有任何效果,當我提交表格時,我的數據庫中有兩個行星,一個帶有輸入輸入的新行星,舊的也仍然存在,而不是一個帶有新輸入的輸入。
行星控制器.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Planet;
use App\Models\SolarSystems;
class PlanetController extends Controller
{
public function home()
{
echo "Welcome at the home pagina!<br>
<a href='planets'>Click here to see all the planets!</a>";
}
// Alle planeten weergeven
public function index()
{
$planets = Planet::with('solar')->get();
echo view('planets', ['planets'=>$planets]);
echo "
<a href='../planets/insert'>Insert new planets!</a>
<br>
<a href='/solarsystems'>Look at the solar systems!</a>
";
}
public function show($planeet)
{
// Alleen de gevraagde planeten weergeven
$planets = Planet::with('solar')->where('name', $planeet)->get();
echo view('planets', ['planets' => $planets]);
echo "
<a href='$planeet/edit'>Edit planet data</a><br>
<a href='../planets'>Go back!</a>
";
}
public function insertForm()
{
$solarsystems = SolarSystems::all();
return view('insertplanets', ['solarsystems' => $solarsystems]);
}
public function insertData(Request $request) {
$name = $request->input('name');
$description = $request->input('description');
$size_in_km = $request->input('size_in_km');
$solar_systems_id = $request->input('solar_systems_id');
$data = array('name' => $name, 'description' => $description, 'size_in_km' => $size_in_km, 'solar_systems_id' => $solar_systems_id);
Planet::insert($data);
return redirect('./planets');
}
public function editPlanetDataForm($planeet)
{
$dataPlanet = Planet::where('name', $planeet)->first();
echo view('editplanetdataform', ['dataPlanet' => $dataPlanet]);
}
public function editPlanetData($planeet, Request $request)
{
return Planet::where('name', $planeet)->first()->update([
'name' => $request->input('name'),
'description' => $request->input('description'),
'size_in_km' => $request->input('size_in_km'),
'solar_systems_id' => $request->input('solar_systems_id')
]);
}
}
編輯planetformdata.blade.php
<html>
<head>
<style>
body {
font-family: 'Nunito', sans-serif;
padding: 0;
margin: 0;
text-align: left;
}
</style>
</head>
<body>
<h2>Update data of the planet!</h2>
<table>
<form action='/planets/create' method='POST'>
<input type = "hidden" name = "_token" value = "<?php echo csrf_token();?>"><input type = "hidden" name = "_token" value = "<?php echo csrf_token();?>">
<tr>
<th>New name of the planet</th>
<td><input name='name' type='text' required></td>
</tr>
<tr>
<th>New size in km of the planet</th>
<td><input name='size_in_km' type='number' required></td>
</tr>
<tr>
<th>New id of the solar system</th>
<td><input type='number' name='solar_systems_id' required></td>
</tr>
<tr>
<th>New information about the planet</th>
<td><textarea rows='5' cols='40' name='description' required></textarea></td>
</tr>
<tr>
<th><input type='submit' value='Add planet'></th>
</tr>
</form>
</table>
<a href='../../planets'>Go back!</a>
</body>
</html>
public function editPlanetData($planeet, Request $request)
{
return Planet::where('name', $planeet)->update([
'name' => $request->input('name'),
'description' => $request->input('description'),
'size_in_km' => $request->input('size_in_km'),
'solar_systems_id' => $request->input('solar_systems_id')
]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.