2017-03-03 34 views
0

以下是我的LevelOneModel。我似乎無法弄清楚我沒有包括什麼。請我需要幫助。如何保存一對多關係到數據庫

我想實現的就是讓所有的用戶ID在LEVELONE表

<?php 

namespace App; 

use Illuminate\Database\Eloquent\Model; 


class LevelOneModel extends Model 
{ 
public function users(){ 
    return $this->hasMany('App\User'); 
} 

} 

下面是我的用戶模型

<?php 

namespace App; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 


class User extends Authenticatable 
{ 
use Notifiable; 

/** 
* The attributes that are mass assignable. 
* 
* @var array 
*/ 
protected $fillable = [ 
    'first_name', 
    'last_name', 
    'email', 
    'phone', 
    'bank_name', 
    'acct_name', 
    'acct_number', 
    'profile_pix', 
    'sme', 
    'other_sme', 
    'password', 
]; 

public function levelone() 
{ 
    return $this->belongsTo('App\LevelOneModel'); 
} 

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

而下面是我的水平一個遷移文件

<?php 

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

class CreateLevelOneTable extends Migration 
{ 
/** 
* Run the migrations. 
* 
* @return void 
*/ 
public function up() 
{ 
    Schema::create('level_one', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('users_id')->unsigned(); 
     $table->integer('upline_id')->nullable(); 
     $table->timestamps(); 
    }); 
} 

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

謝謝

+0

您是否收到任何錯誤? –

+0

沒有錯誤。在此之前,我沒有遵循命名慣例。我的模型名稱與我的表名不同步,但現在已更正。我是Laravel新手。當用戶註冊時,不知道如何將用戶表連接到levelone表。 –

+0

不知道如何填充levelone表,以便在用戶註冊時填充列。 –

回答

0

我注意到有些事情在你的代碼....

在你的類看,我理解的關係是這樣的

  • 用戶只能屬於一個LEVELONE。
  • 一個LEVELONE可以有多個用戶

如果這是正確的,這種關係被錯誤地建立在遷移中。因爲您要將user_id添加到level_one表。

它應該是另一種方式:用戶表必須包含一個level_one_id。

你應該在用戶遷移添加它,像:

$table->int('level_one_id'); 
$table->foreign('level_one_id')->references('id')->on('level_one'); 

現在,你必須(在數據庫中)用戶和LEVELONE之間的連接。

現在,如果您在代碼中查詢用戶,您應該也可以獲得LevelOne的東西。確保真正閱讀關於關係的官方Laravel文檔!它會真的幫助你的例子。