2015-01-21 8 views
0

사용자 모델 :결과를 얻지 못했습니다. 관계 (Laravel 4)

public function followers() { 
    return $this->hasMany('Follower', 'f_who'); 
} 

프로필 컨트롤러 :

$user_followers = User::with('followers')->find($user_id)->toArray(); 

결과

Array 
(
[user_id] => 1 
[username] => dev 
[email] => [email protected] 
[name] => AdminName 
[surname] => AdminSur 
[profile_image] => /img/anon1.jpg 
[ip] => 127.0.0.1 
[pp] => 0 
[np] => 0 
[followers_count] => 2 
[photos_count] => 0 
[created_at] => 2014-12-17 12:08:04 
[updated_at] => 2015-01-18 21:15:55 
[followers] => Array 
    (
     [0] => Array 
      (
       [follower_id] => 1 
       [f_who] => 1 
       [f_which] => 2 
       [created_at] => -0001-11-30 00:00:00 
       [updated_at] => -0001-11-30 00:00:00 
      ) 

     [1] => Array 
      (
       [follower_id] => 2 
       [f_who] => 1 
       [f_which] => 3 
       [created_at] => -0001-11-30 00:00:00 
       [updated_at] => -0001-11-30 00:00:00 
      ) 

    ) 

는)

나는 추종자 이름, 성씨 등을 얻을 필요 관계를 사용하여 하위 "followers"배열에있는 (사용자 조인 사용자 테이블). 나는이 관계와 정말로 혼동 스럽다. 질문이나 구조가 명확하지 않은 경우이를 수정하려고합니다.

f_who - 뒤따라 오는 사람을 의미합니다.

f_which -이 같은 belongsToMany 관계하려고하면

따라하는 사람 :

public function followers() { 
    return $this->belongsToMany('Follower', 'users')->withPivot('f_who'); 
} 

내가 얻을 :

Unknown column 'users.follower_id' in 'field list' (SQL: select `followers`.*, `users`.`user_id` as `pivot_user_id`, `users`.`follower_id` as `pivot_follower_id`, `users`.`f_who` as `pivot_f_who` from `followers` inner join `users` on `followers`.`follower_id` = `users`.`follower_id` where `users`.`user_id` in (1)) 

이 선택해야 users .user_id`

+1

은 다 대다 사용자의 관계, 올바른 처리 피벗 테이블? 이 경우 BelongsToMany 관계를 사용해야합니다. http://laravel.com/docs/4.2/eloquent#working-with-pivot-tables – TonyArra

+0

아직 운이 없습니다. 내 질문을 편집 해 봤어. –

답변

1

팔로워 다른 사용자가 있습니까? 그렇다면 단순히 사용자와 사용자를 연결하십시오.

사용자 모델에서 메소드를 이렇게 작성하십시오.

class User { 

    public function followers() { 
     // Model, pivot table, id of person being followed, id of person following 
     return $this->belongsToMany('User', 'followers', 'f_who', 'f_which'); 
    } 
} 

쿼리 그것은 당신의`followers` 테이블과 같은 관계

$user = User::with('followers')->find($user_id)->toArray();