2015-01-02 2 views
2

내 응용 프로그램에서 이벤트 및 사용자 models.Because 나는 네임 스페이스에 넣어해야합니다 .so 다음과 같이 네임 스페이스를 만들었습니다.
관계에서 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() 

내가 잘못하지 않았다면 나는 그것이 네임 스페이스 오류라고 추측합니다. 그러나 네임 스페이스는 이미 정확하게 선언 된 것 같습니다. 하지만 비슷한 질문을하고 관계에서 다른 방법을 사용했는데 문제가 없었습니다. 개인적으로 만족스럽지 않습니다. 왜 이런 일이 발생했는지 모릅니다.
변경 당신은 당신이 그것을 사용할 필요가 네임 스페이스 내에서 Event을 넣으면

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

답변

0

에 위의 관계는 완전한 클래스 명입니다. 난 당신이 모델에 대한 네임 스페이스를 만들 경우 모든 넣어하는 것이 좋습니다 것입니다, 또한

new App\Models\Event(); 

:

use App\Models\Event; 

또는 네임 스페이스를 인라인으로 지정

당신도 컨트롤러로 가져올 수 있습니다 거기에 그들 중. (User이 코드에 namespace이 누락되었습니다.)

+0

안녕하세요 @lukasgeiter, 저는 이미 사용하려는 컨트롤러에 ** App \ Models \ Event use **를 넣었습니다. – Sanny

+0

네임 스페이스를 사용할 때 네임 스페이스를 지정하면 어떻게됩니까? (내 두 번째 코드 블록) – lukasgeiter

관련 문제