Php 获取错误';试图获得财产';课程代码';非对象的';当我点击编辑按钮时。有什么问题吗?
我正在尝试编辑表中的条目,但每次单击“编辑”按钮进入编辑页面时,都会出现错误: 正在尝试获取非对象的属性“课程代码” 下面是我的代码: CourseController.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
<?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代码
?