2016-12-20 10 views
0

私はもう一方のプロジェクトから引き継ぎます。古いデータベーススキーマは「電子メール」ではなく「ユーザー名」を使用します。パスワードのリセット機能を追加すると、競合が発生します。Laravel 5.2別の列名(電子メールではない)でパスワードをリセットします

public function getEmailForPasswordReset() 
{ 
    return $this->email; 
} 

「メール」よりも別の列名を使用するようにその特性をカスタマイズする方法はありますか?

+0

メールを使用したくない場合はどうすればリセットリンクを送信できますか? –

+0

私は古いバージョンの電子メールを使用して列名でログインすることを意味します。あなたが電子メールを取得したいのであれば、ユーザー名にアクセスするだけです:D – Einsamer

答えて

0

この方法はどうですか?

https://laravel.com/docs/5.0/schema#renaming-columns

emailに古い列の名前を変更します。古い列から新しい属性を作成するのではなく、将来の方がはるかに良いです:)

+0

ええ、それはまた良い方法です。しかし、私は列の名前を直接変更することを恐れています。古いスキーマを使用している古い関数についてはどうですか? :D – Einsamer

+1

だから、開発環境を持っているので、何も心配する必要はありません。あなたのデータをバックアップしてみてください。失敗した場合は、他のものを試してみてください。以前のスキーマを保持することは将来の証明ではなく、今後あなたの会社の別の開発者にとっては驚くべき混乱を引き起こします(WHAAAT、ここには電子メールコラムはありませんWHAAAAAAAAAAAAA DA​​FREEEEEAAAAK)。ああ、この人は列名を変更するのではなく、私はそれを自分でやるよ)。単純なルールを覚えておいてください:あなたのコードを読む別の開発者のような常にコードは、あなたがどこに住んでいるかを知っているサイコパスです。 :) –

+1

"あなたのコードを読んでくれる別の開発者のようなコードは常にあなたがどこに住んでいるかを知っているサイコパスです" 私はそれを愛しています、ありがとう。 :D – Einsamer

0

私はユーザーモデルに新しいアクセサを追加します。

public function getEmailAttribute() 
{ 
    return $this->attributes['username']; 
} 

は、誰かが同様の問題は、それを使用することができました願っています。より良いソリューションへようこそ。

+0

それは意味をなさない。電子メールフィールドを上書きする場合、パスワードリセット電子メールはどこに送信されますか? –

+0

データベースに電子メールフィールドはありません。user_nameはすべて持っているので、カラム名を変更する代わりに、データを取得するアクセサを1つ与えます。 – Einsamer

+0

しかし、電子メールアドレスは、固有のリンクを持つパスワードリセット電子メールを送信する必要があります。ユーザー名列に実際に電子メールアドレスが含まれていない限り、ソリューションは機能しません。 –

関連する問題