2017-08-08 71 views
1

你好,stackoverflow請幫我理解laravel,我是laravel 5中的新人。我真的是laravel的初學者。我正在學習Laravel 5.現在我正在創建一個註冊頁面,我需要將我的數據插入到我的數據庫中。從Laravel的一個表格中插入不同表格5

這是我的問題: 1.請更正我的代碼,因爲我不能將我的數據插入數據庫。 2.將我的數據插入到兩個表中。

現在,在我的情況,我有這樣的兩個表:

enter image description here

現在,我創建具有該領域的一種形式:

<form class="form-horizontal" action="{{ route('user_layouts.signup') }}" method="post"> 
    <div class="form-group"> 
    <label class="control-label col-sm-3" for="email">Email:</label> 
    <div class="col-sm-6"> 
     <input type="email" class="form-control" id="email" name="email" placeholder="Email"> 
    </div> 
    </div> 
    <div class="form-group"> 
    <label class="control-label col-sm-3" for="pwd">Password:</label> 
    <div class="col-sm-6"> 
     <input type="password" class="form-control" id="password" name="password" placeholder="Password"> 
    </div> 
    </div> 
    <div class="form-group"> 
    <label class="control-label col-sm-3" for="fname">First Name:</label> 
    <div class="col-sm-6"> 
     <input type="text" class="form-control" id="fname" name="fname" placeholder="First Name"> 
    </div> 
    </div> 
    <div class="form-group"> 
    <label class="control-label col-sm-3" for="lname">Last Name:</label> 
    <div class="col-sm-6"> 
     <input type="text" class="form-control" id="lname" name="lname" placeholder="Last Name"> 
    </div> 
    </div> 
    <div class="form-group"> 
    <label class="control-label col-sm-3" for="mname">Middle Name:</label> 
    <div class="col-sm-6"> 
     <input type="text" class="form-control" id="mname" name="mname" placeholder="Middle Name"> 
    </div> 
    </div> 
    <div class="form-group"> 
    <label class="control-label col-sm-3" for="contactnum">Contact #:</label> 
    <div class="col-sm-6"> 
     <input type="text" class="form-control" id="contactnum" name="contactnum" placeholder="Contact Number"> 
    </div> 
    </div> 
    <div class="form-group"> 
    <label class="control-label col-sm-3" for="gender">Gender:</label> 
    <div class="col-sm-6"> 
     <label class="radio-inline"><input type="radio" name="gender">Male</label> 
     <label class="radio-inline"><input type="radio" name="gender">Female</label> 
    </div> 
    </div> 
    <div class="form-group"> 
    <label class="control-label col-sm-3" for="bday">Birthday:</label> 
    <div class="col-sm-8"> 
     <div class="row"> 
      <div class="col-xs-4"> 
      <select class="form-control" id="month" name="month"> 
       <option>Month</option> 
       <option value="Jan">Jan</option> 
       <option value="Feb">Feb</option> 
       <option value="Mar">Mar</option> 
       <option value="Apr">Apr</option> 
       <option value="May">May</option> 
       <option value="Jun">Jun</option> 
       <option value="Jul">Jul</option> 
       <option value="Aug">Aug</option> 
       <option value="Sep">Sep</option> 
       <option value="Oct">Oct</option> 
       <option value="Nov">Nov</option> 
       <option value="Dec">Dec</option> 
      </select> 
      </div> 

      <div class="col-xs-4">      
      <select class="form-control" id="day" name="day"> 
       <option value="day">Day</option> 
       @for ($i = 0; $i <= 31; $i++) 
        <option value="{{ $i }}">{{ $i }}</option> 
       @endfor 
      </select> 
      </div> 

      <div class="col-xs-4"> 
      <select class="form-control" id="year" name="year"> 
       <option>Year</option>         
       <option value="1992">1992</option> 
       <option value="1993">1993</option> 
       <option value="1994">1994</option> 
       <option value="1995">1995</option>          
      </select> 
      </div> 
     </div>     
    </div> 
    </div> 
    <div class="form-group"> 
    <div class="col-sm-offset-3 col-sm-10"> 
     <button type="submit" class="btn btn-success">Submit</button> 
    </div> 
    </div> 
    {{ csrf_field() }} 
</form> 

現在這裏是我的路線:

<?php 

/* 
|-------------------------------------------------------------------------- 
| Web Routes 
|-------------------------------------------------------------------------- 
| 
| Here is where you can register web routes for your application. These 
| routes are loaded by the RouteServiceProvider within a group which 
| contains the "web" middleware group. Now create something great! 
| 
*/ 

Route::get('/', function() { 
    return view('shop_layouts.index'); 
}); 

Route::get('/signup', [ 
    'uses' => '[email protected]', 
    'as' => 'user_layouts.signup' 
]); 

Route::post('/signup', [ 
    'uses' => '[email protected]', 
    'as' => 'user_layouts.signup' 
]); 

這是我的控制器:

<?php 

namespace App\Http\Controllers; 

use Illuminate\Http\Request; 

class UserController extends Controller 
{ 
    public function getSignup() { 
     return view('user_layouts.signup'); 
    } 

    public function postSignup(Request $request) { 
     $this->validate($request, [ 
      'email' => 'email|required|unique:tbl_users', 
      'password' => 'required|min:24', 
      'fname' => 'required', 
      'lname' => 'required', 
      'mname' => 'required', 
      'contactnum' => 'required', 
      'gender' => 'required', 
      'month' => 'required', 
      'day' => 'required', 
      'year' => 'required' 
     ]); 

     $user = new User([ 
      'email' => $request->input('email'), 
      'password' => bcrypt($request->input('password')), 
     ]); 
     $user->save(); 

     $customer = new Customer([ 
      'fname' => $request->input('fname'), 
      'lname' => $request->input('lname'), 
      'mname' => $request->input('mname'), 
      'contactnum' => $request->input('contactnum'), 
      'gender' => $request->input('gender'), 
      'lname' => $request->input('lname'), 
     ]); 
     $customer->save(); 
    } 

} 

,最後我的兩個型號:

客戶型號

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Customer extends Model 
{ 
    protected $fillable = [ 
     'fname', 'lname','mname','contactnum','gender' 
    ]; 

    public function user() { 
     return $this->belongsTo(User::class); 
    } 
} 

用戶模型:

<?php 

namespace App; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 
use Illuminate\Database\Eloquent\Model; 

class User extends Authenticatable 
{ 
    use Notifiable; 

    /** 
    * The attributes that are mass assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'email', 'password' 
    ]; 

    /** 
    * The attributes that should be hidden for arrays. 
    * 
    * @var array 
    */ 
    protected $hidden = [ 
     'password', 'remember_token', 
    ]; 

    public function customer() { 
     return $this->hasOne(Customer::class); 
    } 
} 

這裏是我的移民: 客戶:

<?php 

use Illuminate\Support\Facades\Schema; 
use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class TblCustomers extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('tbl_customers', function (Blueprint $table){ 
      $table->increments('customer_id'); 
      $table->integer('user_id')->unsigned(); 
      $table->string('fname'); 
      $table->string('lname'); 
      $table->string('mname'); 
      $table->string('contact_no'); 
      $table->string('gender'); 
      $table->date('birthdate'); 
      $table->timestamps();       
     }); 

     Schema::table('tbl_customers', function (Blueprint $table){ 
      $table->foreign('user_id')->references('user_id')->on('tbl_users')->onDelete('cascade'); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('tbl_customers'); 
    } 
} 

用戶:

<?php 

use Illuminate\Support\Facades\Schema; 
use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateUserTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('tbl_users', function (Blueprint $table){ 
      $table->increments('user_id'); 
      $table->string('email')->unique(); 
      $table->string('password'); 
      $table->timestamps(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('tbl_users'); 
    } 
} 
+0

你有什麼錯誤嗎?檢查日誌。 –

+0

你有什麼錯誤?我認爲你需要使用「使用」來包含這兩個模型。例如:使用路徑/到/客戶模型;使用路徑/到/用戶模型; – Sunil

+0

@VivekShah正如我所說的。請查看我的代碼。我完全是一個初學者。基於我的代碼,我做對了嗎?請幫幫我。我在我的控制檯中也沒有出現錯誤,因爲我沒有在控制器中的錯誤處理程序或任何顯示錯誤 –

回答

1

我認爲你需要更新下面像文件:

客戶模式

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class Customer extends Model 
{ 

    /** 
    * The database table used by the model. 
    * 
    * @var string 
    */ 
    protected $table = 'tbl_Customers'; 

    /** 
    * The database primary key value. 
    * 
    * @var string 
    */ 
    protected $guarded = ['customer_id', '_token']; 

    /** 
    * Attributes that should be mass-assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = [ 
     'fname', 'lname','mname','contact_no','gender','user_id','birthdate' 
    ]; 

    /** 
    * The roles that belong to the User. 
    */ 
    public function tbl_users() 
    { 
    return $this->belongsTo('App\User', 'user_id'); 
    } 
} 

用戶模型

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 

class User extends Model 
{ 


    /** 
    * The database table used by the model. 
    * 
    * @var string 
    */ 
    protected $table = 'tbl_users'; 

    /** 
    * The database primary key value. 
    * 
    * @var string 
    */ 
    protected $guarded = ['user_id', '_token']; 

    /** 
    * Attributes that should be mass-assignable. 
    * 
    * @var array 
    */ 
    protected $fillable = ['email','password']; 


    /** 
    * The roles that belong to the Customer. 
    */ 
    public function tbl_Customers() 
    { 
     return $this->hasMany('App\Customer'); 
    } 
} 

控制器

use App/Customer; 
use App/User; 



public function postSignup(Request $request) { 
    $this->validate($request, [ 
     'email' => 'email|required|unique:tbl_users', 
     'password' => 'required|min:24', 
     'fname' => 'required', 
     'lname' => 'required', 
     'mname' => 'required', 
     'contactnum' => 'required', 
     'gender' => 'required', 
     'month' => 'required', 
     'day' => 'required', 
     'year' => 'required' 
    ]); 

    $dob1 = $request->month.'-'.$request->day.'-'.$request->year; 

    $date1 = strtotime($dob1); 

    $date2 = date('m-d-Y',$date1); 

    $user = new User(); 
    $user->email = $request->email; 
    $user->password = bcrypt($request->password); 
    $user->save(); 


    $customer = new Customer(); 
    $customer->user_id = $user->user_id; 
    $customer->fname = $request->fname; 
    $customer->lname = $request->lname; 
    $customer->mname = $request->mname; 
    $customer->contact_no = $request->contactnum; 
    $customer->gender = $request->gender; 
    $customer->birthdate = $date2; 
    $customer->save(); 
} 

希望這對你的工作!

+0

感謝您的回覆先生。仍然沒有。爲什麼?請幫幫我。我的遷移有問題嗎?或者爲什麼這不能保存? –

+0

@JJJhn讓我檢查它,你喜歡哪種方法存儲數據雄辯或流利? –

+0

也許雄辯。我們可以討論嗎? ?我真的不明白這種模式將如何工作。 。請幫幫我。在我的模型中,我沒有插入數據庫的函數。 –

相關問題