簡體   English   中英

Laravel 正在創建新記錄而不是更新舊記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM