2017-05-29 77 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