2013-06-06 7 views
0

Laravel에서 관계에 액세스하는 데 문제가 있습니다. 이 질문과 관련하여 messagesusers의 두 테이블이 있습니다. user_fromuser_to 열 사용자 (기본 키)의 id에 해당하는 양의 int는Laravel Eloquent ORM : belongs_to()를 사용하여 일대 다 문제가 발생했습니다.

Users: id, email, password, name, created_at, updated_at, bio, reputation, last_login_ip, last_seen, active 

: 같이

Messages: id, user_from, user_to, read, message, created_at, updated_at 

users 테이블 같습니다 같은

messages 테이블 보이는 메시지를 보낸 사람 또는 메시지를 보낸 사람 뷰에서

class User extends Eloquent { 

    //relationships 
    public function messages_from() { 
     return $this->has_many('Message', 'user_from'); 
    } 

    public function messages_to() { 
     return $this->has_many('Message', 'user_to'); 
    } 
} 

, 나는 사용자 액세스하려고 해요 : 같은

class Message extends Eloquent { 

    //relationships 
    public function user_from() { 
     return $this->belongs_to('User', 'user_from'); 
    } 

    public function user_to() { 
     return $this->belongs_to('User', 'user_to'); 
    } 
} 

User 모델의 관련 부분은 같습니다처럼

Message 모델의 관련 부분이 보인다 메시지를 작성하여 다음과 같은 코드를 작성했습니다.

{{ $message->user_from->name }} 

그러면 한 줄에 Trying to get property of non-object이라는 오류가 발생합니다. 나는 user_fromuser_to을 제외한 다른 모든 속성이 정의되어 완벽하게 인쇄되기 때문에 $message 개체가 정의 된 것을 알고 있습니다. 나는 여러 번 문서를 읽었으며 내가 잘못한 것을 알아낼 수 없다 ... 누군가는 누구에게나 밀착되어 있는가? 이것은 교과서 예제처럼 보이지만 작동하지 않습니다.

내가보기에 데이터를 통과 한 방법은 다음과 같습니다

$messages = Message::where('user_to', '=', Auth::user()->id)->take(20)->get(); 
+0

분명히하기 위해 이것은 Laravel 3입니다. – wnajar

+0

그래서 $ message-> user_to를 출력하면 적어도 id를 얻게됩니까? 사촌 그러면 다음과 같이 해결할 수 있습니다 .... echo (User :: find ($ message-> user_from) -> name) .... 관계를 작동시키는 것이 좋겠지 만 – KyleK

+0

지금 시도해보십시오. * 편집 : * 예,'$ message-> user_from'을 출력하면 사용자의 ID를 알 수 있습니다. 나는 이것이 단지'User' 모델에 해당하는 연결을 만들지 않을 것이라고 생각합니다. 보기에 SQL 쿼리를 사용하는 것은 이상적이지 않지만 지금은 임시 해결책을 시도하고 있습니다 ... – wnajar

답변

0

는 해결합니다 Message 모델 from_user()to_user() 대신 user_from()user_to()의 메소드 이름 만들기 (그리고 해당하는 뷰를 변경) 문제가 완전히. 다른 코드는 변경되지 않았습니다.

사용자 정의 필드를 지정할 때 Laravel은 메소드 이름을 통해 데이터베이스 필드를 가져옵니다 (필자는 생각합니다). 기묘한.

+1

오 ~ wierd .... 그걸 몰랐다 – KyleK

+0

나도 그랬지. – wnajar