2016-04-05 20 views
0

我有会员和SkyMedRep型号:Laravel外键关系 - 在字段列表未知列

class SkyMedRep extends Model 
{ 
    protected $fillable = [ 
     'id','rep_id', 
    ]; 

    public function members() 
    { 
     return $this->hasMany('App\Member'); 
    } 
} 

class Member extends User 
{ 
    public function sky_med_rep() 
    { 
     return $this->belongsTo('App\SkyMedRep'); 
    } 
} 

这是会员迁移:

public function up() 
    { 
     Schema::create('members', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('sky_med_rep_id')->unsigned(); 
     $table->timestamps(); 
    }); 

    Schema::table('members', function($table) { 
     $table->foreign('sky_med_rep_id')->references('id')- >on('sky_med_reps')->nullable(true); 
    }); 
} 

会员模型包含外键引用SkyMedRep model.After定义这种关系,我试图将SkyMedRep模型的对象分配给会员模型的对象,如:

$member->sky_med_rep = $sky_med_rep; 

在这里,$ member是会员模型的对象,$ sky_med_rep是SkyMedRep模型的对象。

当我尝试$ member-> save()时,出现错误“字段列表中的未知列'sky_med_rep'”。看来sky_med_rep不能被当作外键引用。下面是我的代码来保存数据:

$member = new Member(); 
    $member->sky_med_member_number = $request->input("sky_med_member")['member_number']; 
    $sky_med_rep = SkyMedRep::firstOrNew(['rep_id' => $request->input("sky_med_member")['rep_id']]); 
    $sky_med_rep->name = $request->input("sky_med_member")['name']; 
    $sky_med_rep->save(); 
    $member->sky_med_rep = $sky_med_rep; 
    $member->save(); 
+0

你能告诉我你什么时候得到错误吗?也告诉我你的查询? – Qazi

+0

$ member = new Member(); $ member-> sky_med_member_number = $ request-> input(“sky_med_member”)['member_number']; $ sky_med_rep = SkyMedRep :: firstOrNew(['rep_id'=> $ request-> input(“sky_med_member”)['rep_id']]); $ sky_med_rep-> name = $ request-> input(“sky_med_member”)['name']; $ sky_med_rep-> save(); $ member-> sky_med_rep = $ sky_med_rep; $ member-> save(); 保存成员对象时出现错误。我已经通过SkyMedRep对象分配了$ member-> sky_med_rep。但在保存期间,我收到错误未知字段列表 –

+0

请[编辑]您的问题以包含附加信息。 –

回答

1

相反$member->sky_med_rep = $sky_med_rep;的你应该写$member->sky_med_rep->associate($sky_med_rep);

也看看http://www.php-fig.org/psr/psr-2/编码风格指南。方法名称应该是camelCase,而不是下划线。

+0

太好了。我刚刚从django迁移到laravel。我刚来这地方。但感谢它像一个魅力(y) –

相关问题