Laravel에서 관계에 액세스하는 데 문제가 있습니다. 이 질문과 관련하여 messages
과 users
의 두 테이블이 있습니다. user_from
및 user_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_from
과 user_to
을 제외한 다른 모든 속성이 정의되어 완벽하게 인쇄되기 때문에 $message
개체가 정의 된 것을 알고 있습니다. 나는 여러 번 문서를 읽었으며 내가 잘못한 것을 알아낼 수 없다 ... 누군가는 누구에게나 밀착되어 있는가? 이것은 교과서 예제처럼 보이지만 작동하지 않습니다.
내가보기에 데이터를 통과 한 방법은 다음과 같습니다
$messages = Message::where('user_to', '=', Auth::user()->id)->take(20)->get();
분명히하기 위해 이것은 Laravel 3입니다. – wnajar
그래서 $ message-> user_to를 출력하면 적어도 id를 얻게됩니까? 사촌 그러면 다음과 같이 해결할 수 있습니다 .... echo (User :: find ($ message-> user_from) -> name) .... 관계를 작동시키는 것이 좋겠지 만 – KyleK
지금 시도해보십시오. * 편집 : * 예,'$ message-> user_from'을 출력하면 사용자의 ID를 알 수 있습니다. 나는 이것이 단지'User' 모델에 해당하는 연결을 만들지 않을 것이라고 생각합니다. 보기에 SQL 쿼리를 사용하는 것은 이상적이지 않지만 지금은 임시 해결책을 시도하고 있습니다 ... – wnajar