Пространство имен Laravel в отношениях меня смутило

В моем приложении у меня есть модели событий и пользователей. Из-за модели событий я должен поместить ее в пространство имен. Поэтому я создал пространство имен следующим образом.

Событие

<?php namespace App\Models;

class Event extends \Eloquent {
public function user()
{
return $this->belongsTo('User');
}

пользователь

<?php

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;
use App\Models\Event;

class User extends Eloquent implements UserInterface, RemindableInterface {
public function events()
{
return $this->hasMany('Event');
}

Отношения между пользователем и событием просты OneToMany. Так по моему EventController Я использую метод POST для создания нового ресурса события.

$e = new Event(array('keys'=>'values')); //without user_id filled
$user->events()->save($e);

В то же время я получил ошибку.

Call to undefined method Illuminate\Support\Facades\Event::newQuery()

Если я не ошибаюсь, я предполагаю, что это ошибка пространства имен. Но пространства имен уже объявлены правильно, я думаю.
Но я пытаюсь посещать похожие вопросы и использовать альтернативный способ в отношениях, и тогда это работает нормально. Лично я не нахожу это удовлетворенным. Любая идея, почему это произошло?
Измените вышеприведенное отношение на

public function events()
{
return $this->hasMany('\App\Models\Event');
}

2

Решение

Если вы положите Event внутри пространства имен вы должны использовать его с полным именем класса.

Вы можете импортировать его в свой контроллер:

use App\Models\Event;

Или укажите встроенное пространство имен:

new App\Models\Event();

Кроме того, я бы порекомендовал, если вы создадите пространство имен для моделей, в которое вы поместите их все. (User отсутствует namespace в вашем коде)

0

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

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

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