问题
I have two related models Domain
and 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:
Have you tried?
$new_domain = $domain->create($request->all());
$server->domain()->associate($new_domain);
$server->save();
来源:https://stackoverflow.com/questions/33916181/laravel-inserting-foreign-keys-causes-integrity-constraint-violation