【问题标题】:laravel multiple email addresses under one accountlaravel 一个帐户下的多个电子邮件地址
【发布时间】:2017-01-01 00:16:39
【问题描述】:

我的 laravel 应用程序要求用户可以拥有多个可用于登录的电子邮件地址。

我的问题是,如何允许用户在一个帐户下拥有多个电子邮件地址?我必须记住,每封电子邮件只能由一个用户使用。

我的想法是为包含用户 ID 的电子邮件创建一个单独的表格。不过,我仍然想使用 Auth 类,想知道这是否可行?

【问题讨论】:

    标签: php laravel


    【解决方案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->电子邮件

    【讨论】:

    • 我需要外键吗?如果有,在哪里?
    • 你不需要外键,因为 Laravel 会自动为你添加它们,只要你的外键标有表名后跟 _id。 (例如 user_id)laravel.com/docs/4.2/eloquent#relationships 您可以添加自己的外键。 return $this->belongsTo('User', 'foreign_key', 'local_key');
    猜你喜欢
    • 2017-06-14
    • 1970-01-01
    • 2021-03-27
    • 2016-10-03
    • 2010-10-02
    • 2022-09-28
    • 1970-01-01
    • 2018-02-08
    • 2018-08-21
    相关资源
    最近更新 更多