2016-04-22 81 views
0

我們公司正在創建(非常活躍)註冊表格。處理這些數據的應用程序是Laravel 5應用程序。我正試圖消除註冊處理腳本中的所有不必要的查詢。但是請注意,它是甚至更​​重要我們正確記錄每個註冊。

現在,我寫了這個到應用程序流:

$entry_timestamp = time(); 

DB::table('form_registration_data')->insert($userDataArray); 

$matchArray = array('last_name' => $last_name, 'entry_timestamp' => $entry_timestamp);// the (required field last_name/unix entry_timestamp) pair is (safely IMO) assumed to be a unique "ID" 

$sql = DB::table('form_registration_data')->select('entry_id')->where($matchArray)->first(); 

if (!empty($sql)) { 
    //from this point script knows user data was recorded properly 
} else { 
    $errorMsg = 'There was a problem with the server. Please try again."; 
} 

我之所以寫了一個單獨的選擇查詢我不是100%一定的,只是因爲插入查詢沒有失敗這個手段它正確執行和數據被正確地記錄在DB(請記住,這是最重要的方面)

換句話說,這就是爲什麼我沒有寫這樣的劇本:

$sql = DB::table('form_registration_data')->insert($userDataArray); 

if ($sql) { 
    //was the data truly recorded properly - 100% guaranteed ??? 
} else { 
    $errorMsg = 'There was a problem with the server. Please try again."; 
} 

我太過分了嗎?換句話說,插入查詢GUARANTEE的非失敗是否在DB中記錄了正確的數據?

+1

爲什麼不嘗試獲取它的基礎上'LAST_INSERT_ID()',看看它是否在那裏,以確保?如果它沒有失敗它可能成功了,但是不能保證別的東西沒有刪除它,或者將來不會刪除它。編程充滿了不確定性。 – tadman

+0

同意,如果您使用ORM併爲該變量分配要保存的值。您可以使用$ data-> id來檢查保存。如果id不在那裏,它不會保存。 – arcee123

+0

@tadman真實 - 但問題集中在腳本執行的時候 - 而不是未來的刪除。該腳本的其他部分沒有任何刪除功能 –

回答

0

這將工作。您還可以使用$數據 - > id來引用聯接表作爲外鍵插入:

// In your models file, this will set table. 
class Registration extends Model { 

    protected $FIELD1; 
    protected $FIELD2; 
    protected $FIELD3; 
    protected $FIELD4; 
    protected $FIELD5; 
    protected $FIELD6; 
    protected $FIELD7; 
} 


//In your controller: 

$data = new Registration(); 

$data->FIELD1 = VALUE1; 
$data->FIELD2 = VALUE2; 
$data->FIELD3 = VALUE3; 
$data->FIELD4 = VALUE4; 
$data->FIELD5 = VALUE5; 
$data->FIELD6 = VALUE6; 

if($data->save()) { 
    echo 'ID: ' & $data->id & ' Saved.' 
} 
+0

謝謝你的回答。每個註冊表格的字段數量可能會有很大不同,並且可以隨時由表單的作者更改。性能也很重要,加入巨大的表來檢查外鍵是不是我想要做的事情。看到我最後一個評論IMO更簡單的「中間地帶」方法 –

+1

好的。看看這個:http://laravel.io/forum/04-30-2014-saving-dynamically-created-form-field-array-to-db-laravel-way – arcee123

相關問題