Php 如何在用户注册时插入多个表并从中编辑注册
注册新用户时,如何在多个表(默认用户表和父表)中插入行? 我知道我需要编辑模型、AuthController和视图 我的用户模型:Php 如何在用户注册时插入多个表并从中编辑注册,php,html,laravel-5.1,Php,Html,Laravel 5.1,注册新用户时,如何在多个表(默认用户表和父表)中插入行? 我知道我需要编辑模型、AuthController和视图 我的用户模型: 名称空间Jcfk\Models\User; 类用户扩展模型实现AuthenticatableContract, 密码合同 { 使用可验证的、可重置的密码; /** *模型使用的数据库表。 * *@var字符串 */ 受保护的$table='user'; /** *@var字符串 */ 受保护的$primaryKey='user_id'; /** *@var bool
名称空间Jcfk\Models\User;
类用户扩展模型实现AuthenticatableContract,
密码合同
{
使用可验证的、可重置的密码;
/**
*模型使用的数据库表。
*
*@var字符串
*/
受保护的$table='user';
/**
*@var字符串
*/
受保护的$primaryKey='user_id';
/**
*@var bool
*/
public$timestamps=false;
/**
*质量可分配的属性。
*
*@var数组
*/
受保护的$fillable=[“电子邮件”,“密码];
/**
*从模型的JSON表单中排除的属性。
*
*@var数组
*/
受保护的$hidden=['password','memory_token'];
公共职能(家长){
返回$this->hasOne(“app\Models\Parents”);
}
/**
*当前用户是管理员吗
*
*@returnbool
*/
公共功能isAdmin(){
返回$this->role\u id==role::ADMIN;
}
公共职能isParents(){
返回$this->role\u id==role::PARENT;
}
}
家长模式:
名称空间Jcfk\Models\Parents;
类父类扩展模型
{
受保护的$table='parent';
public$timestamps=false;
public$primaryKey='user_id';
受保护的$fillable=[“姓名”、“电话”、“地址”、“城市id”、“地区”,
“postalcode”];
公共函数用户(){
返回$this->belongsTo(“应用程序\用户”);
}
}
身份验证控制器:
名称空间Jcfk\Http\Controllers\Auth;
使用light\Contracts\Auth\Guard;
使用Illumb\Contracts\Routing\Register;
使用Jcfk\Models\User;
使用Jcfk\Models\Parents;
使用验证器;
使用Jcfk\Http\Controllers\Controller;
使用Illumb\Foundation\Auth\AuthenticatesAndRegistersUsers;
类AuthController扩展控制器
{
使用AuthenticatesAndRegistersUsers;
/**
*创建新的身份验证控制器实例。
*
*@返回无效
*/
公共函数构造(Guard$auth,Registrar$Registrar){
$this->auth=$auth;
$this->registrator=$registrator;
$this->middleware('guest',['except'=>'getLogout']);
}
/**
*获取传入注册请求的验证程序。
*
*@param数组$data
*@return\light\Contracts\Validation\Validator
*/
受保护的函数验证器(数组$数据){
返回验证器::生成($data)[
//'name'=>'必填项|最大值:255',
“电子邮件”=>“必需”|电子邮件|最大值:255 |唯一:用户”,
“密码”=>“必需”|已确认|最小值:6',
]);
}
/**
*在有效注册后创建新用户实例。
*
*@param数组$data
*@返回用户
*/
受保护的函数创建(数组$data){
$user=新用户($data);
$parents=新父级($data);
$user->save();
$user->Parents()->save($Parents);
}
}
家长的数据库字段为user\u id
,name
,phone
,address
,…用户的数据库字段是
User\u id
,email
,password
我还需要有关我的register.blade.php
文件的帮助
名称
电子邮件地址
密码
确认密码
登记
创建服务或存储库层
创建存储库:
<?php
namespace App\Models\Repositories\User;
use App\Models\Entites\User;
use App\Models\Entites\Parent;
class UserRepository implements UserInterface
{
public function create($input)
{
$user = new User($data);
$parents = new Parents($data);
$user->save();
$user->Parents()->save($parents);
return $user;
}
}
现在,在控制器方法中,可以执行以下操作:
use App\Models\Repositories\User\UserInterface;
protected function create(UserInterface $userRepository, array $data) {
$userRepository->create($data);
}
运行您现在拥有的代码的效果是什么?我们需要更多关于您试图实现的目标的信息。什么是
父项
,它与用户
有何关系?而且,你没有正确地处理好雄辩的人际关系。例如,Parents::User()
中的$this->belongsTo(“app\User”)
应该指向用户的名称空间,因此应该是“Jcfk\Models\User”
而不是“app/User”
。您还需要传递表名,因为您使用的是非默认表名。请参阅。再次阅读您的问题后,您似乎正在使用家长
来保存额外的用户
详细信息。为什么不将这些字段添加到用户
模型本身?那你就根本不需要担心雄辩的人际关系了。
<?php
namespace App\Models\Repositories\User;
use Illuminate\Support\ServiceProvider;
class UserRepositoryServiceProvider extends ServiceProvider
{
/**
* Registers the UserInterface with Laravels IoC Container
* @return void
*/
public function register()
{
$this->app->bind('App\Models\Repositories\User\UserInterface', 'App\Models\Repositories\User\UserRepository');
}
}
'providers' => [
/*
* Laravel Framework Service Providers...
*/
/*
* Your providers
*/
App\Models\Repositories\User\UserRepositoryServiceProvider::class,
],
use App\Models\Repositories\User\UserInterface;
protected function create(UserInterface $userRepository, array $data) {
$userRepository->create($data);
}