【发布时间】:2018-10-16 19:06:09
【问题描述】:
我正在尝试使用 laravel 在 mysql 中插入数据,而我收到错误 ErrorException (E_NOTICE) 试图获取非对象的属性,我不知道的问题在哪里,请帮助我。
我的控制器代码是 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) 试图获取非对象的属性,如果有人知道问题出在哪里,请帮忙
【问题讨论】:
-
我认为
Auth::user()->id可能是问题所在。检查Auth::user()是否为空。 -
id是user表中的主键,在发布表user_id中用作外键
-
用户表包含数据,不为空
-
你的 store 方法引用了
publications,你的使用语句是App\publication -
publication 是我的模型,而 Publications 是 mysql 数据库中的表名