2016-06-21 4 views
0

이상한 문제가 있습니다.Laravel 외래 키 관계

사용자 테이블과 회사 테이블이 있습니다. 사용자가 속한 회사와 회사는 많은 사용자가 있습니다.

테이블의 기본 키는 모두 id입니다.

또한 설득력이 외래 키는 부모의 id 컬럼과 일치하는 값이 있어야한다고 가정하십시오 laravel 문서에서

나는 다음과 같은 읽어 보시기 바랍니다.

CompanyModel이있어 :

$users = CompanyModel::find(1)->users; 
dd($users); 

그것은 작동하지 않습니다 :

protected $table = 'company'; 

public function users() 
    { 
     return $this->hasMany(UserModel::class); 
    } 

나는이 때. !? 내 관계 작동에 외래 키 추가 할 때 :

protected $table = 'company'; 

public function users() 
    { 
    return $this->hasMany(UserModel::class, 'id'); 
    } 

을이 이상한 권리는 무엇입니까? 내가 뭘 잘못하고 있는지. 내 users 테이블에서

는 --EDIT--

나는 company_id 열을 가지고있어!

+0

문서는 사용자의 COMPANY_ID 열이 제안 표. 'id'를 추가하면 결과가 잘못 될 수 있습니다. – geoandri

+0

내 사용자 테이블에 company_id 열이 있습니다! – Jamie

+0

사용자 테이블에 company_model_id 열이 있거나 외부 키로 "id"대신 "company_id"를 추가해야한다고 생각합니다. – geoandri

답변

0

먼저 모델 이름을 CompanyModel에서 Company으로, UserModel에서 User으로 변경하시기 바랍니다.

그런 다음 company_idusers 테이블에 있는지 확인하십시오. 그리고 당신의 users 마이그레이션 파일과 같은 companies 테이블로 users 테이블을 연결합니다

 

    $table->integer('company_id')->unsigned(); 
    $table->foreign('company_id')->references('id')->on('companies')->onDelete('cascade'); 

데이터베이스를 갱신하는 것을 잊지 마십시오. 귀하의 모델에서 다음

, 같은 관계를 정의 : 그런 다음 레코드를 가져올 수

 

    // User model 
    // Laravel will automatically identify and use the `company_id` field in your reference 
    public function company(){ 
     return $this->belongsTo(Company::class); 
    } 

    // Company model 
    public function users(){ 
     return $this->hasMany(User::class); 
    } 

컨트롤러에 같은 :

 

    $user = User::find(1); 

    $user_company = $user->company; // This might not be necessary in your controller, you can do it in your view 

    dd($users, $user_company);