繁体   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