2016-07-07 4 views
1

내에서 비 ​​객체, 관계의 속성을 얻으려고 노력 다음과 같이 설정하십시오 :는 Laravel 내가 다음과 같이 사용자 모델을 가지고 같은 테이블

public function up() 
    { 
     Schema::table('users', function (Blueprint $table) { 
      $table->foreign('recruiters_id')->references('id')->on('users'); 
     }); 
    } 

그래서 사용자는 다른 사용자를 채용 할 수 있습니다. 그러나 {{$ user-> recruiter-> id()}}와 같은 것을 시도 할 때 "객체가 아닌 객체의 속성을 얻으려고 시도하는 중"오류가 발생합니다.

{{print_r ($ user-> recruiter))}} 그 대신 아래처럼 출력물을 얻습니다. print_r을 한 번만 사용하더라도 "개체"가 몇 번 반복되는 것처럼 보이지만 적어도 미숙 한 사람에게는 보이지 않습니다.

App\User Object ([table:protected] => users [fillable:protected] => Array ([0] => review_count [1] => review_sum [2] => review_avg [3] => display_name [4] => business_name [5] => setting1 [6] => referrer_id [7] => referrer_margin [8] => gender [9] => age [10] => title [11] => points [12] => credits [13] => bankacct_nr [14] => bankacct_name [15] => bsb [16] => save_payment [17] => newsletter [18] => first_name [19] => last_name [20] => phone [21] => email [22] => password [23] => subject [24] => credentials [25] => margin [26] => user_type [27] => url [28] => questions [29] => form_subject [30] => postcode [31] => recruiters_id [32] => internal_notes) [hidden:protected] => Array ([0] => password [1] => remember_token) [connection:protected] => [primaryKey:protected] => id [perPage:protected] => 15 [incrementing] => 1 [timestamps] => 1 [attributes:protected] => Array ([id] => 240 [first_name] => Jane [last_name] => Recruit [title] => [phone] => [email] => [email protected] [user_type] => recruiter [margin] => 0.00 [credentials] => [password] => $2y$10$eTSX9vRGFr5eupAL/kyexeARVDjT.M/7xE2Yp.6PMTuH/dOsFd6QS [remember_token] => [created_at] => 2016-07-06 15:19:23 [updated_at] => 2016-07-06 15:19:23 [status] => [url] => [newsletter] => 0 [postcode] => [form_subjects] => [questions] => [save_payment] => 0 [bsb] => [bankacct_nr] => [bankacct_name] => [points] => 0 [credits] => 0 [gender] => [age] => 0 [referrer_id] => [referrer_margin] => 0.00 [setting1] => [business_name] => [display_name] => i recruit [following] => [followers] => [belts_id] => [recruiters_id] => [internal_notes] => [review_count] => 0 [review_sum] => 0 [review_avg] => 0.00) [original:protected] => Array ([id] => 240 [first_name] => Jane [last_name] => Recruit [title] => [phone] => [email] => [email protected] [user_type] => recruiter [margin] => 0.00 [credentials] => [password] => $2y$10$eTSX9vRGFr5eupAL/kyexeARVDjT.M/7xE2Yp.6PMTuH/dOsFd6QS [remember_token] => [created_at] => 2016-07-06 15:19:23 [updated_at] => 2016-07-06 15:19:23 [status] => [url] => [newsletter] => 0 [postcode] => [form_subjects] => [questions] => [save_payment] => 0 [bsb] => [bankacct_nr] => [bankacct_name] => [points] => 0 [credits] => 0 [gender] => [age] => 0 [referrer_id] => [referrer_margin] => 0.00 [setting1] => [business_name] => [display_name] => i recruit [following] => [followers] => [belts_id] => [recruiters_id] => [internal_notes] => [review_count] => 0 [review_sum] => 0 [review_avg] => 0.00) [relations:protected] => Array () [visible:protected] => Array () [appends:protected] => Array () [guarded:protected] => Array ([0] => *) [dates:protected] => Array () [dateFormat:protected] => [casts:protected] => Array () [touches:protected] => Array () [observables:protected] => Array () [with:protected] => Array () [morphClass:protected] => [exists] => 1 [wasRecentlyCreated] =>) 1 

이것은 처음으로 동일한 테이블 내에서 묵직한 관계를 설정 한 것이므로 실수를 한 것 같습니다. 어떤 조언이 많이 나는 문제를 말하고 싶지만 전체 마이그레이션을하지 않고, 미리

+0

사용자 테이블 마이그레이션 코드 (전체)를 제공 할 수 있습니까 –

답변

2

에 감사를 감상 할 수있다 Laravel 5.1

를 사용하면 외국 같은 탄력성의 recruites_id 둘의 관계는 여기

public function recruits() 
{ 
    return $this->hasMany('App\User','recruiters_id'); 
} 
public function recruiter() 
{ 
    return $this->belongsTo('App\User','recruiters_id'); 
} 

있다 열쇠, 신원이 밝혀 지긴하지만.

hasMany의 당신은 belongsTo를 따라서

return $this->belongsTo('App\User', 'foreign_key', 'other_key'); 

에 대한

return $this->hasMany('App\User', 'foreign_key', 'local_key'); 

가 동일해야

public function recruits() 
{ 
    return $this->hasMany('App\User','recruiters_id', 'id'); 
} 
public function recruiter() 
{ 
    return $this->belongsTo('App\User'); 
} 

당신이 찾고있는 무엇이어야한다 (recruiters_id가 제대로 마이그레이션에 정의되어있는 경우)

+0

고마워요! 이게 내 문제를 해결했다. – user6122500

관련 문제