2017-03-03 126 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文档!它会真的帮助你的例子。