Laravel / Sentinel Вызов неопределенного метода на маршруте

Я пытаюсь создать систему уведомлений, следуя этой замечательной инструкции:
https://jplhomer.org/2017/01/building-realtime-chat-app-laravel-5-4-vuejs/

Получение уведомлений из БД работает нормально, но когда я пытаюсь сделать уведомление постоянным по почтовому маршруту, я получаю следующую ошибку в своем журнале:

Я использую Laravel 5.4, Sentinel, vue2 и axios

[2017-03-24 15:00:58] local.ERROR: BadMethodCallException: Call to undefined method Illuminate\Database\Query\Builder::notification() in /Users/odp/www/laravel/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2445

В моей консоли браузера все, что я получаю, это:

Error: Request failed with status code 500

Мой маршрут получения и отправки следующий:

// Notifications
Route::get('/notifications', function() {
return App\Notification::with('user')->get();

});

Route::post('/notifications', function() {
//$user = Auth::User(); //Original code from tutorial
Sentinel::getUserRepository()->setModel('App\User');
$user = Auth::getUser(); //Auth is now an alias for Sentinel

$user->notification()->create([
'notification' => request()->get('notification')
]);

return ['status' => 'OK'];

});

Приложение / User.php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Sentinel;

class User extends \Cartalyst\Sentinel\Users\EloquentUser
{
use Notifiable;

/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'first_name', 'email', 'password',
];

/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];

public function notifications()
{
return $this->hasMany(Notification::class);
}
}

Приложение / Notification.php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Sentinel;

class Notification extends Model
{protected $fillable = [
'notification',
];

public function user()
{
return $this->belongsTo(User::class);
}
}

Я не знаю, является ли это уместным, но это из моего app.js, где я считаю, что строка axios.post создает ошибку 500 на основе сбойного маршрута.

const app = new Vue({
el: '#app',

data: {

notifications: []
},

methods: {

addNotification(notification) {
this.notifications.push(notification);

axios.post('/notifications', notification).then(response => {

})
}
},

created() {
axios.get('/notifications').then(response => {
//console.log(response);
this.notifications = response.data;
});
}
});

0

Решение

Ошибка в том, что он пытается позвонить notification на Illuminate\Database\Query\Builder объект.

Это заставляет меня верить, что Auth::getUser() на самом деле возвращает Builder объект, а не ваша фактическая модель пользователя.

Я бы попробовал прихватить ->get() в $user = Auth::getUser()->get(),

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]