Laravel - inserting foreign keys causes Integrity

2019-09-02 07:09发布

I have two related models Domainand Server. I'm trying to insert data to my tables using a form. here is my store function :

public function store(Request $request, Domain $domain, Server $server)
{
    $domain->create($request->all());

    $server->domain()->associate($domain);
    $server->save();
    $server->create($request->only(['srv_hostname','srv_ip','srv_port']));

    return redirect()->route('domains.index');
}

the table servers has a FK domain_id that points to the PK domain.id Once I submit my form i get the error :

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'domain_id' cannot be null (SQL: insert into servers (domain_id, updated_at, created_at) values (, 2015-11-25 10:55:45, 2015-11-25 10:55:45))

It seems like fk is not correctly linked to the pk..but I don't know how to solve this. thanks :)

Notes :

1 - My 2 related models:

Class Server extends Eloquent {
    public function domain(){
    return $this->belongsTo('Domain');
   }
// $fillable and stuff..
}

-

Class Domain extends Eloquent {
    public function servers(){
    return $this->hasMany('Server');
}
//
}

2 - My tables are related:

Schema::table('servers', function($table){
    $table->foreign('domain_id')
        ->references('id')
        ->on('domains')
        ->onDelete('cascade');
});

1条回答
对你真心纯属浪费
2楼-- · 2019-09-02 07:54

Have you tried?

  $new_domain = $domain->create($request->all());

  $server->domain()->associate($new_domain);
  $server->save();
查看更多
登录 后发表回答