php - 在 null LARAVEL 上调用成员函数 update()

标签 php mysql database laravel

我尝试更新特定项目,但出现错误“在空值上调用成员函数 update()”。 我之前尝试用 ->insert($data) 更改 ->update($data) 并且它有效。

Controller :

public function update(Request $request, $id)
    {
        $this -> validate($request, array(
            'gamename' => 'required|min:3',
            'price' => 'required|int|min:1',
            'genre' => 'required',
            'releaseddate' => 'required|date',
            'picture' => 'required|mimes:jpeg,jpg,png,gif'
        ));


        $gamename = $request->input('gamename');
        $genre = $request->input('genre');
        $price = $request->input('price');
        $releaseddate = Carbon::parse($request->input('releaseddate'));
        $picture = $request->file('picture')->getClientOriginalName();

        $data=array('gamename' => $gamename, 'genre'=>$genre, 'price'=>$price,'releaseddate'=>$releaseddate,'picture'=>$picture );

        DB::table('games')->join('genres', 'games.genreid', '=', 'genres.genreid')->find($id)->update($data);

        return redirect('managegame');
    }

查看:

<form action="/update/{id}" method="post" id="registerform" enctype="multipart/form-data">
<div class="errorpop{{ $errors->has('genre') ? ' has-error' : '' }}">
            <label for="genre" class="">Genre</label>

            <div class="">
                @foreach($genres as $genre)
                    <option value="{{ $genre->genreid }}">{{ $genre->genre }}</option>
                @endforeach
                @if ($errors->has('genre'))
                    <span class="help-block">
                                        <strong>{{ $errors->first('genre') }}</strong>
                                    </span>
                @endif
            </div>
        </div>

最佳答案

{id} 不是一个值。您必须具有 {id} 的值。 示例:action="/update/1"

<form action="/update/1" method="post" id="registerform" enctype="multipart/form-data">
<div class="errorpop{{ $errors->has('genre') ? ' has-error' : '' }}">
            <label for="genre" class="">Genre</label>

            <div class="">
                @foreach($genres as $genre)
                    <option value="{{ $genre->genreid }}">{{ $genre->genre }}</option>
                @endforeach
                @if ($errors->has('genre'))
                    <span class="help-block">
                                        <strong>{{ $errors->first('genre') }}</strong>
                                    </span>
                @endif
            </div>
        </div>

然后更新你使用方法 where('id', $id) 替换 find($id)

DB::table('games')->join('genres', 'games.genreid', '=', 'genres.genreid')->where('id', $id)->update($data);

https://laravel.com/docs/5.5/queries#updates

关于php - 在 null LARAVEL 上调用成员函数 update(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48139158/

相关文章:

javascript - PHP 后的 Javascript 中缺少变量

php - Magento Bundle 产品客户组价格

MySQL Select Children(树/链结构)

php - 在 Codeigniter 中设置 PHPMyAdmin 子域

java - 我的 java 应用程序不会显示 mysql 数据库的任何输出

mysql - 根据另一个表中的更改自动更新数据库行

php - mysql取数组报错2

php - 在 MySQL 中将大约 100 个值从一个表存档到另一个表的最佳方法?

MySQL - 让 ORDER BY 按嵌入到字符串字段中的数字排序

database - Laravel 加载数据库