2014-11-23 5 views
1

내 laravel 응용 프로그램은 사용자가 로그인에 사용할 수있는 여러 전자 메일 주소를 가질 수 있어야합니다.하나의 계정에서 여러 전자 메일 주소를 larvel

제 질문은 사용자가 한 계정에서 여러 이메일 주소를 가질 수 있도록 허용하는 방법입니다. 각 이메일은 한 명의 사용자 만 사용할 수 있습니다.

내 아이디어는 사용자 ID가 포함될 전자 메일을위한 별도의 테이블을 갖는 것이 었습니다. 그래도 Auth 클래스를 사용하고 싶습니다. 가능한지 궁금합니다.

답변

1

user_id에 링크 된 별도의 이메일 테이블이있는 사용자 테이블을 가질 수 있습니다. Laravel을 사용하고 있기 때문에 이와 같은 전자 메일 표에 대한 마이그레이션을 실행하십시오.

public function up() 
{ 
    Schema::create('email_table', function(Blueprint $table) 
    { 
     $table->primary('id'); 
     $table->integer('user_id'); 
     $table->string('email')->unique(); 
     $table->timestamps(); 
    }); 
} 

그런 다음 일대 다 관계를 만듭니다.

class Email extends Eloquent { 

    public function user() 
    { 
     return $this->belongsTo('User'); 
    } 

} 

그리고 사용자 모델을 업데이트하십시오.

class User extends Eloquent { 

    public function emails() 
    { 
     return $this->hasMany('Email'); 
    } 

} 

보기에서 사용자의 이메일을 요청할 때.

// using Blade 
<ul> 
@foreach($user->emails as $email) 
    <li>{{ $email }}</li> 
@endforeach 
</ul> 

또는 인증 클래스를 사용할 수도 있습니다. 대신 $ 사용자 -> 이메일

+0

Auth::user()->emails 

내가 외국 키가 필요하십니까? 그렇다면 어디에서? –

+0

외래 키가 필요하지 않습니다. Laravel은 외래 키에 _id가 오는 테이블 이름으로 레이블이 지정되어있는 한 자동으로 추가하기 때문에 외래 키는 필요하지 않습니다. (예 : user_id) http://laravel.com/docs/4.2/eloquent#relationships 자신 만의 외래 키를 추가 할 수 있습니다. return $ this-> belongsTo ('User', 'foreign_key', 'local_key'); – Robbie

관련 문제