2014-10-02 42 views
0

我想複製我的數據庫中的某些數據,我按照以下鏈接中的步驟。 Laravel 4: replicate to table 但是,我需要複製一些其他數據只使用一個外鍵。我試圖使用find()方法來獲取我的數據,但沒有返回任何東西。where子句返回我的數據,但以數組的形式被複制方法接受。複製使用外鍵 - Laravel

Anhy的想法我做錯了什麼,我該如何複製我的其他數據?

代碼:

$item = Cv::find($cv_id); 
     // return $item; 
     $clone = $item->replicate(); 
     unset($clone['created_at'],$clone['updated_at']); 
     $data = json_decode($clone, true); 
     Cv::create($data); 

     //Skills 
     // return $cv_id; 
     $skills = Skill::where('cv_id', $cv_id); 
     $cloneSkills = $skills->replicate(); 
     unset($cloneSkills['created_at'],$cloneSkills['updated_at']); 
     $skillData = json_decode($cloneSkills,true); 
     Skill::create($skillData); 
+1

你的代碼或數據結構在哪裏?我們不是奇才 – 2014-10-02 11:56:41

+0

現在我們有代碼。什麼不正如你所期望的那樣?這裏是否創建了任何數據? – 2014-10-02 12:19:51

+0

cv部分創建成功。在技能部分,只有第一行工作,我不能複製數據說明調用未定義的方法照亮\數據庫\查詢\ Builder ::複製()。 – omarsafwany 2014-10-02 12:21:27

回答

1

用於複製的技能,你應該使用:

$skills = Skill::where('cv_id', $cv_id)->get(); 

foreach ($skills as $skill) { 

    $cloneSkill = $skill->replicate(); 
    unset($cloneSkill['created_at'], $cloneSkill['updated_at']); 
    $skillData = json_decode($cloneSkill, true); 
    Skill::create($skillData); 
} 

您需要使用get()來獲取所有數據,並因爲$skills是收集你需要使用循環複製每個技能。

+0

好吧,它的工作,但技能表中的cv_id沒有改變爲新的。它保持前一個。爲什麼會發生? – omarsafwany 2014-10-02 12:27:43

+0

@omarsafwany因爲您使用相同的變量來查找技能'$ cv_id'。如果您想使用其他ID,則需要再次在CV中查找另一個項目,並將'$ cv_id'更改爲其ID。 – 2014-10-02 12:29:35

+0

答案接受。 謝謝。 – omarsafwany 2014-10-02 12:34:29