2015-11-25 106 views
0

我有兩個相關型號DomainServer。我正嘗試使用表單將數據插入到表中。這裏是我的存儲功能:Laravel - 插入外鍵導致違反完整性約束

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'); 
} 

servers有一個FK domain_id指向PK domain.id 一旦提交我的形式我得到的錯誤:

SQLSTATE [23000]:完整性約束違規:1048列 '域ID' 不能爲空(SQL:插入serversdomain_idupdated_atcreated_at)值(,2015年11月25日10時55分45秒,2015年11月25日10時55分45秒))

似乎fk沒有正確鏈接到pk ..但我不知道如何解決這個問題。謝謝:)

注:

1 - 我的2種相關機型:

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 - 我的表是相關的:

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

回答

0

你試過了嗎?

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

    $server->domain()->associate($new_domain); 
    $server->save(); 
+0

其解決了這個問題,該生產線'$服務器 - >填充($請求 - >只([ 'srv_hostname', 'srv_ip', 'srv_port']));'應雖然保持。否則'save'函數只存儲外鍵和時間戳。 – RidRoid