2014-11-23 7 views
1

Мое приложение laravel требует, чтобы у пользователей было несколько адресов электронной почты, которые они могут использовать для входа в систему.laravel несколько адресов электронной почты под одной учетной записью

Мой вопрос: как можно позволить пользователям иметь несколько адресов электронной почты под одной учетной записью? Я должен помнить, что каждое электронное письмо может использоваться только одним пользователем.

Моя идея состояла в том, чтобы иметь отдельную таблицу для писем, в которых я бы включил идентификаторы пользователей. Я все еще хочу использовать класс 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> 

Или вы также можете использовать класс Auth.

Auth::user()->emails 

вместо $ user-> письма

+0

бы мне нужен внешний ключ? Если да, то где? –

+0

Вам не нужны внешние ключи, потому что Laravel автоматически добавляет их для вас, если ваш внешний ключ помечен именем таблицы, за которым следует _id. (Пример user_id) http://laravel.com/docs/4.2/eloquent#relationships Вы можете добавить свои внешние ключи. return $ this-> belongsTo ('Пользователь', 'foreign_key', 'local_key'); – Robbie

Смежные вопросы