gpt4 book ai didi

mysql - 尝试获取非对象的属性 ErrorException (E_NOTICE)

转载 作者:行者123 更新时间:2023-11-29 10:01:34 24 4
gpt4 key购买 nike

我尝试使用 laravel 在 mysql 中插入数据,但收到错误 ErrorException (E_NOTICE)试图获取非对象的属性,我不知道问题出在哪里,请帮助我。

我的 Controller 代码是 PublicationController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\publication;
use Auth;

class PublicationController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
//
return view('publications');
}

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

/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
//
publications::create([
'user_id' => Auth::user()->id,
'title' => request('title'),
'status' => request('status'),
'year' => request('research_area')
]);
return 'inserted';
}

/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}

/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}

/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}

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

模型代码已给出publication.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class publication extends Model
{
//
protected $fillable = ['title','status','year'];
}

给出了我的路线代码。

<?php

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::get('education', 'EducationController@index');
Route::post('edu', 'EducationController@store');

Route::get('publications','PublicationController@index');
Route::post('pub','PublicationController@store');

错误被赋予 Class ErrorException (E_NOTICE)尝试获取非对象的属性,如果有人知道问题出在哪里,请帮忙

最佳答案

考虑将 PublicationController 放在身份验证中间件后面:

class PublicationController extends Controller
{
...
public function __construct()
{
$this->middleware('auth');
}
...
}

您还可以使用路由组:

Route::middleware(['auth'])->group(function () {
// your routes
});

如果 Auth::user() 为 null,则 Auth::user()->id 将为您提供您提到的异常。将路由或 Controller 放在中间件后面应该可以解决这个问题。

编辑

假设您使用的是 Laravel 5.6 https://laravel.com/docs/5.6 。这应该适用于 5.5 和 5.7。

关于mysql - 尝试获取非对象的属性 ErrorException (E_NOTICE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52842396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com