2017-05-29 80 views
1

我正在使用laravel 5.4,我有公司的第二个用户表,经过很长时间的搜索和与代码战斗我终于想出它如何将数据保存在正确的表中,但有2个问题,我仍然需要解决。注册用户返回dd

  1. 用户注册dump_var后会弹出!并且除了重定向到仪表板
  2. 密码字段不会保存到数据库

这里是我的registercontroller(你可以看到我没有任何dd();):

<?php 

namespace App\Http\Controllers\Auth; 

use App\Company; 
use App\Http\Controllers\Controller; 
use Illuminate\Support\Facades\Validator; 
use Illuminate\Foundation\Auth\RegistersUsers; 
use Illuminate\Support\Facades\Input; 
use Illuminate\Http\Request; 
use Hash; 
use Session; 

class CompanyRegisterController extends Controller 
{ 

    /** 
    * Where to redirect users after registration. 
    * 
    * @var string 
    */ 
    protected $redirectTo = 'companies'; 

    public function __construct() { 
    $this->middleware('guest:company'); 
    } 

    protected function index() 
    { 
    return view('auth.company-register'); 
    } 
    /** 
    * Get a validator for an incoming registration request. 
    * 
    * @param array $data 
    * @return \Illuminate\Contracts\Validation\Validator 
    */ 
    protected function validator(array $data) 
    { 
     return Validator::make($data, [ 
      'company_name' => 'required|string|max:255', 
      'manager_name' => 'required|string|max:255', 
      'username' => 'required', 
      'email' => 'required|string|email|max:255|unique:companies', 
      'password' => 'required|string|min:6|confirmed', 
     ]); 
    } 

    /** 
    * Create a new user instance after a valid registration. 
    * 
    * @param array $data 
    * @return User 
    */ 
    protected function create(Request $request) 
    { 
     return Company::create([ 
      'company_name' => Input::get('company_name'), 
      'manager_name' => Input::get('manager_name'), 
      'username' => Input::get('username'), 
      'email' => Input::get('email'), 
      'password' => Hash::make($request->password) 
     ]); 

     Session::flash('success', 'Welcome, thank you for choosing us for your advertise.'); 
     return redirect()->route('company.dashboard'); 
    } 
} 

Here is image after user register (return)

This is how database looks like, all saved except password

谢谢。

回答

2

用户注册dump_var后会弹出!除非重定向到仪表板

ModelName::create()返回创建的实例,并返回它的结果。所以这是有道理的。你甚至像这样评论你的方法:@return User。如果你不想返回的用户:

protected function create(Request $request) 
{ 
    Company::create([ 
     'company_name' => Input::get('company_name'), 
     'manager_name' => Input::get('manager_name'), 
     'username' => Input::get('username'), 
     'email' => Input::get('email'), 
     'password' => Hash::make($request->Password) 
    ]); 

    return 'Something else, a string or a view for example'; 
} 

密码字段不会保存到数据库

当你确认你写'password' => 'required|string|min:6|confirmed'密码,所以我推断你命名密码字段password。虽然当您创建用户时,您尝试通过$request->Password检索名为Password的字段。请注意大写字母。 “P”不应该小写吗?

更新:

这个答案是完全地正确的,我只是忘了添加在我的模型password字段设置为可填写

protected $fillable = [ 
    'company_name', 'manager_name', 'username', 'email', 'image', 'about', 'address', 'password', 
]; 
+0

嗨@louisfischer谢谢您的回答,我已经固定资本'P'和添加'return redirect() - > route('company.dashboard');'但仍然是相同的结果,将返回dd(),并且不保存密码 – djhru

+0

欢迎您。请考虑更新您的问题,以便那些想要帮助您的人不会看错方向。 – louisfischer

+0

好,但我该怎么办?仍然存在问题,有什么想法? – djhru