Попытка получить свойство необъекта ErrorException (E_NOTICE) - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь isert данные в MySQL, используя laravel, в то время как я получаю сообщение об ошибке 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)
    {
        //
    }
}

В то время как код модели передан публикации.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). Пытаясь получить свойство необъекта, помогите, если кто-нибудь знает, в чем проблема

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Наконец, я нашел ответ на свой вопрос, просто включив 'user_id' в мой заполняемый массив модели, и приведенный выше код работает правильно.

0 голосов
/ 16 октября 2018

Рассмотрите возможность размещения PublicationController за промежуточным ПО аутентификации:

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

Вы также можете использовать группы маршрутов:

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

Если Auth::user() равен нулю, то Auth::user()->id даст вамисключение вы упомянули.Размещение маршрутов или контроллера за промежуточным ПО должно решить эту проблему.

Редактировать

Предполагается, что вы используете Laravel 5.6 https://laravel.com/docs/5.6. Это должно работать для 5.5 и5,7.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...