Mysql 尝试获取非对象ErrorException的属性(E_通知)
我正在尝试使用laravel在mysql中插入数据,同时收到错误错误异常E_通知 正在尝试获取非对象的属性,我不知道哪里有问题,请帮助我 我的控制器代码是PublicationController.phpMysql 尝试获取非对象ErrorException的属性(E_通知),mysql,laravel,Mysql,Laravel,我正在尝试使用laravel在mysql中插入数据,同时收到错误错误异常E_通知 正在尝试获取非对象的属性,我不知道哪里有问题,请帮助我 我的控制器代码是PublicationController.php <?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\publication; use Auth; class PublicationController extends Control
<?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');
该错误被给予类ErrorException E_通知
试图获取非对象的属性,如果有人知道问题出在哪里,请提供帮助考虑将PublicationController置于身份验证中间件之后:
class PublicationController extends Controller
{
...
public function __construct()
{
$this->middleware('auth');
}
...
}
也可以使用管线组:
Route::middleware(['auth'])->group(function () {
// your routes
});
如果Auth::user为null,则Auth::user->id将为您提供您提到的异常。将路由或控制器放在中间件后面应该可以解决这个问题
编辑
这假设您使用的是Laravel 5.6。这应该适用于5.5和5.7。最后,我通过在我的模型可填充arry中包含“user\u id”找到了问题的答案,并且上面的代码正常工作。我认为Auth::user->id可能是问题所在。检查Auth::user是否为null。id是用户表中的主键,而它在包含数据的名为user\u iduser table的发布表中用作外键,它不是空的。您的存储方法引用发布,并且您的使用语句是App\publicationpublicationismymodel,而发布是mysql数据库中表的名称