2016-07-24 48 views
1

我需要在同一时间创建两个用户。这是我在AuthController中的代码:Laravel多创建用户

protected function create(array $data) { 

    $profile = New \App\ClientDetail(); 
    $profile->s_firstname = $data['s_firstname']; 
    $profile->s_surname = $data['s_surname']; 
    $profile->p_firstname = $data['p_firstname']; 
    $profile->p_surname = $data['p_surname']; 
    $profile->s_mobile_number = $data['s_mob_number']; 
    $profile->s_home_number = $data['s_home_number']; 
    $profile->p_mobile_number = $data['p_mob_number']; 
    $profile->p_home_number = $data['p_home_number']; 
    [...all the form information fields] 
    $profile->save(); 
    /*FIRST USER TO CREATE*/ 
    if($data['s_email']) { 
     $user = User::create([ 
      'detail_id' => $profile->id, 
      'email' => $data['s_email'], 
      'password' => bcrypt('secret'), 
     ]); 
     $user->attachRole($student); 
    } 
    /*SECOND USER TO CREATE*/ 
    if($data['p_email']) { 
     $user = User::create([ 
      'detail_id' => $profile->id, 
      'email' => $data['p_email'], 
      'password' => bcrypt('secret'), 
     ]); 
     $user->attachRole($parent); 
    } 

    return $user; 
} 

问题是令牌只存储在最后创建的用户中。在mysql数据库中,对于第一个用户,列remember_tokennull

如何创建两个不同的标记?
如果您有另一个同时创建两个用户的好主意,请告诉我。

感谢

回答

0

尽量节省用户是这样的:

$user = new User($data); 
$user->save(); 

您的用户模型申报$可填写的属性:

protected $fillable = ['email','password', 'detail_id']; 

您也可以使用:

$user->profile()->associate($profile->id); 

而在用户模式:

public function profile() 
{ 
    return $this->belongsTo('App\Profile'); 
} 

或者你也可以做这样的事情:

$profile->users()->createMany($usersData);