2017-01-30 162 views
0

我有兩個表atms和atm_devices atms表有許多atm_devices。當創建一個新的Atm時,我也想創建與Atm相關的新的atm_devices。在添加任何atm之前,我有15個atm和60個atm_devices,其中atms的id是1到15,atm_devices的id是1到60。當我添加新的Atm時,ID從16開始;迄今爲止沒有錯。當atm_devices被創建時,第一個新創建的atm_devices被自動分配一個id,這個id等於新atm的id(在本例中爲16)。這將創建「完整性約束違規:1062重複條目」,因爲60個atm_devices中已經有1到60的數字。這裏是我的代碼 `$ atm1 = new Atm; $ atm-> name = $ request-> get('name'); $ atm-> ip_address = $ request-> get('ip_address'); $ atm-> save(); $ atmDevice1 = new AtmDevice; $ atmDevice1-> name ='Top Cassette'; $ atmDevice1-> oid ='.1.3.6.1';Laravel 5.2插入相關模型具有完整性約束衝突

$atmDevice2 = new AtmDevice; 
$atmDevice2->name = 'Cash Dispenser Second Cassette'; 
$atmDevice2->oid = '.1.3.6.1.4'; 
$atm->atmDevices()->saveMany([$atmDevice1, $atmDevice2]);` 
+0

這種感覺就像你定義在ATM設備的外鍵與主鍵相同。你的關係定義是什麼? – apokryfos

+0

感謝apokryfos這是原因,我有我的代碼中的錯誤,我改變它從返回$ this-> hasMany('App \ AtmDevice','id');返回$ this-> hasMany('App \ AtmDevice','atm_id'); – temesgen

回答

0

使用外鍵的名稱和在關係的定義中應該是相同的,像這樣:

public function atmDevices() 
{ 
    return $this->hasMany('App\AtmDevice', 'atm_id'); 
} //relationship definition 


$table->foreign('atm_id')->references('id')->on('atms')->onDelete('cascade');//migration table states atm_id is a foreign key 
相關問題