2017-08-02 9 views
0

私は比較的新しいlaravelを使用しており、手動で設定する必要があるプロジェクトがあります。Laravel User Authentication Scaffolding - > 2つのテーブルにデータを保存する

背景:プロフィールやユーザー:認証足場での作業

  • は、私は2つのテーブルを持っている
  • (ユーザー 登録とログインを処理します)。
  • すべてのユーザーは1つのプロフィールを持っています。
  • ただし、すべてのプロファイルにユーザーがあるわけではありません。

セットアップ: Profileテーブル =>などのID、名前、アバター、 ユーザー表 => PROFILE_ID、電子メール、パスワード

Laravel認証(足場)が登録を処理しているためとログイン。私は、ユーザーテーブルを保存する前にプロファイルテーブルにデータを保存しようとしています。

protected function create(array $data) 
{ 

    $profile = Profile::create 
    ([ 
     'slug' => $data['name'], 
     'name' => $data['name'], 
    ]); 

    $user = User::create 
    ([ 
     'profile_id' => $profile->id, 
     'name' => $data['name'], 
     'email' => $data['email'], 
     'password' => bcrypt($data['password']), 
    ]); 

    return $user; 
} 

これは機能しません。そして、エラーメッセージは、クエリに割り当てられたprofile_idがないことを伝えています。

私は間違っていますか?

答えて

0

モデルはどのように設定されていますか?

$profile = new Profile; 
$profile->slug = $data['name']; 
$profile->name = $data['name']; 

$profile->save(); 
// At this point now you'll be able to get an ID of the profile 

$user = new User; 
$user->profile_id = $profile->id; 
$user->name = $data['name']; 
$user->email = $data['email']; 
$user->password = bcrypt($data['password']); 

$user->save(); 

return $user; 
+0

はいそれは私のオリジナルのアイデアだったが、私は次のようになっています:SQLSTATE [HY000]:一般的なエラー:1364フィールド「PROFILE_ID」は持っていません雄弁し、あなたのDBが正しく設定されている場合は、これを行うことができますデフォルト値(SQL: 'name'、' email'、 'password'、' updated_at'、 'created_at')の値(John、[email protected]、$ 2y $ 10 $ NoMoLSL1Sgek4enF2k2x7eL2Yo.To8O5uiriCrZdZk9rlW4CVbK1u、 2017-08-02 18:08:17、2017-08-02 18:08:17)) –

+0

データベースの移行を確認するには、プロファイルID列が**自動増分**に設定されていることを確認する必要があります –

関連する問題