Php 获取错误';试图获得财产';课程代码';非对象的';当我点击编辑按钮时。有什么问题吗?

Php 获取错误';试图获得财产';课程代码';非对象的';当我点击编辑按钮时。有什么问题吗?,php,laravel,Php,Laravel,我正在尝试编辑表中的条目,但每次单击“编辑”按钮进入编辑页面时,都会出现错误: 正在尝试获取非对象的属性“课程代码” 下面是我的代码: CourseController.php: <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Course; class CoursesController extends Controller { /** * Display a l

我正在尝试编辑表中的条目,但每次单击“编辑”按钮进入编辑页面时,都会出现错误:

正在尝试获取非对象的属性“课程代码”

下面是我的代码:

CourseController.php:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Course;

class CoursesController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        // $courses = Course::all();

        // $courses = Course::orderBy('title', 'desc')->get();
        $courses = Course::orderBy('course_code', 'desc')->paginate();
        return view('subs.index')->with('courses', $courses);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('subs.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $this->validate($request, [
            'course_code' => 'required',
            'course_name' => 'required'
        ]);

        $course = new Course;
        $course->course_code = $request->input('course_code');
        $course->course_name = $request->input('course_name');
        $course->save();

        return redirect('/subs')->with('success', 'New course added!');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($course_code)
    {
        $course = Course::find($course_code);
        return view('subs.show')->with('course', $course);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($course_code)
    {
        $course = Course::find($course_code);
        return view('subs.edit')->with('course', $course);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $course_code)
    {
        $this->validate($request, [
            'course_code' => 'required',
            'course_name' => 'required'
        ]);

        $course = Course::find($course_code);
        $course->course_code = $request->input('course_code');
        $course->course_name = $request->input('course_name');
        $course->save();

        return redirect('/subs')->with('success', 'Course Updated!');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}
@extends('layouts.app')

@section('content')
<a href="/subs" class="btn btn-default">Go back</a>
    <div class="container">
        <h1>{{$course->course_code}}</h1>
        <h3>{{$course->course_name}}</h3>
    </div>
    <a href="/subs/{{$course->course_code}}/edit" class="btn btn-default">Edit</a></td>
@endsection

我认为这里的课程代码不是主键。所以你不能用find来获取它
两种方式

1st passing your primary key(**id**) & update
第二次使用何处

$course = Course::where('course_code',$course_code)->first();

然后更新。
在这里,您还需要更改课程代码的值。因此,第一个值对于您传递id和使用查找和更新是正确的,我认为这里课程代码不是主键。因此,您无法使用查找来获取它 两种方式

1st passing your primary key(**id**) & update
第二次使用何处

$course = Course::where('course_code',$course_code)->first();

然后更新。
在这里,您还需要更改course_code的值。因此,第一个值对于您传递id和使用find&update是正确的,因为您使用了错误的值来为您的模型生成链接。您需要使用
id
而不是
course\u code
find
方法将使用模型的主键进行搜索

<a href="/subs/{{ $course->id }}/edit" class="btn btn-default">Edit</a>

您使用了错误的值为模型生成链接。您需要使用
id
而不是
course\u code
find
方法将使用模型的主键进行搜索

<a href="/subs/{{ $course->id }}/edit" class="btn btn-default">Edit</a>
该方法将仅返回具有匹配主键的对象,不能传递其他值。如果未找到具有此主键的对象,则将返回
null
,并且您无法从
null
获取属性

更改主键,或者更新查询:

$course = Course::where('course_code', $course_code)->first();
如果查询确实返回了什么,那么添加一个检查也是一个好主意。只是为了确保将来避免同样的错误:

if ($course === null) {
    abort(404); // Show 404 page if course does not exist
}

如果更改主键,请不要忘记更新
课程
模型的以下属性

// The column name of your primary key.
protected $primaryKey = 'your_key_name';

// Indicating that the primary key is not a number.
public $incrementing = false;
该方法将仅返回具有匹配主键的对象,不能传递其他值。如果未找到具有此主键的对象,则将返回
null
,并且您无法从
null
获取属性

更改主键,或者更新查询:

$course = Course::where('course_code', $course_code)->first();
如果查询确实返回了什么,那么添加一个检查也是一个好主意。只是为了确保将来避免同样的错误:

if ($course === null) {
    abort(404); // Show 404 page if course does not exist
}

如果更改主键,请不要忘记更新
课程
模型的以下属性

// The column name of your primary key.
protected $primaryKey = 'your_key_name';

// Indicating that the primary key is not a number.
public $incrementing = false;

Model::find
可以返回
null
(不是对象)。。。
course\u code
是否为
courses
的主键?否我没有将其设置为主键。我留下了
id
作为主键。
Model::find
可以返回
null
(不是对象)。。。
course\u code
是否为
courses
的主键?否我没有将其设置为主键。我留下了
id
作为主键。我已经将主键从
id
更改为
course\u code
,现在我得到了编辑页面,但是在
course\u code
应该出现的字段中,它现在输入的是
0
的主键,而不是
course\u code
。如何修复它,使其显示
课程代码
?我已将主键从
id
更改为
课程代码
,现在我获得了编辑页面,但在
课程代码
应该显示的字段中,它现在输入的主键是
0
,而不是
课程代码
。如何修复它,使其显示
课程\u代码