Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在用户注册时插入多个表并从中编辑注册_Php_Html_Laravel 5.1 - Fatal编程技术网

Php 如何在用户注册时插入多个表并从中编辑注册

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

注册新用户时,如何在多个表(默认用户表和父表)中插入行? 我知道我需要编辑模型、AuthController和视图

我的用户模型:
名称空间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);
}