2017-08-08 249 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

也许雄辩。我们可以讨论吗? ?我真的不明白这种模式将如何工作。 。请帮帮我。在我的模型中,我没有插入数据库的函数。 –