2016-06-24 55 views
1

我有2个表usertn_user,表user是登录在含表信息,我提出它通过教程从https://laravel.com/所以基本上它被自动创建,而tn_user是一个表,我让由我Laravel插入2个表

用户表 image alt 的情况下,你无法看到atribut被idnameemailpassword的重要的事情,email并在此表password用于记录在

TN_USER表 image alt 的atribut被cn_idcv_namecv_emailcn_phonecv_positioncv_addresscv_countrycv_usernamecv_passwordcv_privileges,这些都是重要的事情

基于以下我在表格上想将usernamepassword插入表user,其余的插入表tn_user,我该怎么做?即时通讯漂亮的新laravel所以不是真的很了解,我通常使用CI

image alt

UserController.php 这就是我的代码用于插入数据 我使用JSON响应解析数据并不太清楚如何将数据插入到这里2个表一点帮助

public function createOrEdit(){ 
    //get current user 
    $currentUserId = Auth::user()->id; 

    $isUpdate = false; 
    $id = Input::get('id'); 
    $user = new UserCompany; 
    if($id != ""){ 
     $user = UserCompany::where('cn_id', '=', $id)->firstOrFail(); 
     $user->cv_updated_by = $currentUserId; 
     $user->cv_updated_at = Carbon::now(); 
     $isUpdate = true; 
    }else{ 
     $user->cv_created_by = $currentUserId; 
     $user->cv_created_at = Carbon::now(); 
    } 
    $user->cv_name = Input::get('name'); 
    $user->cv_position = Input::get('position'); 
    $user->cv_email = Input::get('email'); 
    $user->cn_phone = Input::get('phone'); 
    $user->cv_address = Input::get('address'); 
    $user->cv_username = Input::get('username'); 
    $user->cv_password = Input::get('password'); 
    $user->cv_country = Input::get('country'); 

    if($isUpdate){ 
     UserCompany::where('cn_id','=',$id)->update(['cv_updated_by' => $user->cv_updated_by, 
      'cv_updated_at' => $user->cv_updated_at, 
      'cv_name' => $user->cv_name, 
      'cv_position' => $user->cv_position, 
      'cv_email' => $user->cv_email, 
      'cn_phone' => $user->cn_phone, 
      'cv_country' => $user->cv_country, 
      'cv_username' => $user->cv_username, 
      'cv_password' => $user->cv_password, 
      'cv_address' => $user->cv_address]); 

    }else{ 
     $user->save(); 
    } 

    $returnedData = UserCompany::all(); 

    $response = array(
      'content' => $returnedData, 
      'status' => 'success', 
     ); 

    return Response::json($response); 
} 

UserCompany.php是我的模型,但因为即时通讯新的IM没有真正理解如何使用关系尚未

<?php namespace Activity; 

use Illuminate\Database\Eloquent\Model; 

class UserCompany extends Model { 
    protected $table = 'tn_user'; 
    public $timestamps = false; 

    protected $fillable = [ 

    ]; 

    /*public function usercompany(){ 
     return $this->belongsTo('Activity\user'); 
    }*/ 
} 
+0

你如何保持两个表之间的关系?什么是外键? – IshaS

+0

嗯,你有点回合,我仍然在想它 –

+0

我改变了一些属性,在用户表'id'我改成了'id_user'然后在'tn_user'我添加了另一个字段名称'id_user',所以外键是'id_user' –

回答

1

你应该知道,在UserCompany类,通过设置fillable,表示您正在设置要更改的表列,在本例中为tn_user表。因此,这意味着,通过设置

protected $fillable = []; 

这意味着,你正在做不表列应该当您使用命令喜欢进行修改;

$user_details->cv_name = Input::get('cv_name'); 

好的,所以你应该知道的第一件事是,当创建两个表我。Ëuserstn_users你应该有携带这涉及两个表的值一列,我建议你向用户idusers表:

我注意到,你已经使用cn_id是一个链接,但它是最好的,如果每个表都有自己的递增ID列,并且在这种情况下,自己的link_id列

比方说,你已经开始了:

  1. 打开命令提示符终端,去你laravel项目文件夹目录,然后键入:-$ php artisan make:model User -m,再次-$ php artisan make:model UserDetail -m

    这将完成时,创建UserUserDetail,并添加-m意味着它的创建相关的模型迁移哪些被create_users_tablecreate_user_details_table

  2. create_users_table简单地创建所需的表列如下所示:

现在
use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateUsersTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('users', function (Blueprint $table){ 
      $table->increments('id'); 
      $table->integer('auth'); 
      $table->string('username')->unique(); 
      $table->string('email'); 
      $table->string('password'); 
      $table->boolean('online'); 
      $table->string('lang', 2); 
      $table->rememberToken(); 
      $table->timestamps(); 
     }); 
    }  
    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     // 
     Schema::drop('users'); 
    } 
} 

create_tn_users_table其还挺重要的是,你应该设置哪些链接与用户的帐户,这样想你删除的用户,他的证书也将被删除,但你可以,如果你想要它,否则做。


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

class CreateTnUsersTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('tn_users', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('full_name'); 
      $table->string('username')->unique(); 
      $table->integer('link_user_id') 
       ->references('id')->on('users'); // Relationship btn table tn_users and users 
      $table->string('phone'); 
     }); 
    } 

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

现在转到所述命令提示终端并键入-$ php artisan migrate有创建的表。

再就命令提示终端类型-$ php artisan make:controller UserController --resource并已控制器及其资源制成在一起。

在UserController中的create()函数中,添加Request作为参数。

的功能是在你已经创建


namespace App\Http\Controllers; 

use App\User; 
use App\TnUser; 
use ... 

class UserController extends Controller{ 
    public function create(Request $request){ 
     $tn_user = new TnUser(); 
     $user = new User(); 
     $user->username = $request['username']; 
     $user->password = bcrypt($request['username']); 
     ... 
     $user->save(); 
     $tn_user->full_name = ucword(strtolower($request['full_name')); 
     $tn_user->link_user_id = $user->id; // uses the previously save id 
     $tn_user->phone = trim($request['phone']); 
     $th_user->save(); 
    } 
} 

我希望我已经回答了你的问题提交表单来达成。这里有一些有用的链接来学习。

1

您创建2个对象

$user = new User() 
$user->username = INPUT::get('username'); 
$user->password = $password // Hashed 
$user->save(); 
$user_detail = new UserCompany() // Your detail table modal. 
$user_detail->cv_name = Input::get('cv_name'); 
//etc 
$user_detail->save() 
+0

我的模型中的关系如何? –