2014-10-06 74 views
0

好的,所以我的問題是,我的ajax調用沒有正確更新。它和我有的功能一樣,只是不更新​​值。雖然,我可以在mysql中運行查詢,並且它更新正常。功能如下:Laravel更新不更新表

/* 
* "elerts/quicksave" > Update elert from all screen 
*/ 
public function quicksave($id) 
{ 
    $data = (object)Input::get(); 

    $ev = Events::find($id); 
    $ev->limit   = $data->limit; 
    $ev->EventEnabled = $data->EventEnabled; 
    $ev->SundayStart = $data->SundayStart; 
    $ev->MondayStart = $data->MondayStart; 
    $ev->TuesdayStart = $data->TuesdayStart; 
    $ev->WednesdayStart = $data->WednesdayStart; 
    $ev->ThursdayStart = $data->ThursdayStart; 
    $ev->FridayStart = $data->FridayStart; 
    $ev->SaturdayStart = $data->SaturdayStart; 
    $ev->save(); 

    $queries = DB::getQueryLog(); 
    $last_query = end($queries); dd($last_query); 

    return "Your eLert has been saved!"; 
} 

下面是一個示例ID獲取通過,並獲得通過的$數據對象的示例。

$id = '107'; 
object(stdClass)#137 (9) { ["limit"]=> string(3) "400" ["EventEnabled"]=> string(1) "1" ["SundayStart"]=> string(1) "0" ["MondayStart"]=> string(1) "0" ["TuesdayStart"]=> string(1) "0" ["WednesdayStart"]=> string(1) "0" ["ThursdayStart"]=> string(1) "1" ["FridayStart"]=> string(1) "1" ["SaturdayStart"]=> string(1) "1"} 

我很困惑,爲什麼沒有更新。任何幫助?

編輯:下面,我已經包括了代碼爲我的模型,這樣的人不會有問題吧...

<?php 
/** 
* @author jmadrigal 
* Date: 7/2/14 
* Time: 10:23 AM 
*/ 
class Events extends Eloquent { 

protected $primaryKey = 'eventid'; 
public $timestamps = false; 

protected $fillable = array(
    'eventname', 'eventdescription', 'EventEnabled', 'visitcost', 'groupid', 'flagid', 'SundayStart', 'MondayStart', 'TuesdayStart', 'WednesdayStart', 'ThursdayStart', 'FridayStart', 
    'SaturdayStart', 'limit', 'Vtmpl', 'delayV', 'Etmpl', 'delayE', 'Ttmpl', 'delayT', 'Mtemp', 'delayM', 'Login', 'freqv', 'freqt', 'freqe', 'maxe', 'maxt', 'maxv', 
    'amtide', 'amtidt', 'amtidv', 'apptinterval' 
); 

public function aInterval() { 
    return $this->hasMany('AppointmentInterval'); 
} 
} 
+0

您的'Events'模型是最近添加的模型嗎?另外,如果返回'$ data',我們得到'object(stdClass)#137(9){[「limit」] => string(3)「400」[「EventEnabled」] => string(1) [「SundayStart」] => string(1)「0」[「MondayStart」] => string(1)「0」[「TuesdayStart」] => string(1)「0」[「WednesdayStart」] => string (1)「0」[「ThursdayStart」] => string(1)「1」[「FridayStart」] => string(1)「1」[「SaturdayStart」] => string(1)正確? – 2014-10-08 11:18:50

+0

事件模型實際上已經用了很長時間。它在那裏呆了幾個月。這是正確的。事實上,我正在更新我的代碼以包含模型,以便人們可以看到我在哪裏。 – jamadri 2014-10-08 13:38:57

回答

0

對於任何複選框,發送「字符串」的類型未進入,因爲值需要是(int)值或(bool)值'1'或'0'。這是問題。數據庫是由其他人在一年前建立的,直到現在我才知道。它是固定的。

+0

它必須是愚蠢的東西不是嗎? – 2014-10-08 19:05:06

+0

我討厭什麼時候發生這種事情。因爲如果不是你的焦點,那麼如此清晰的事物可能會變得模糊不清,而焦點集中在代碼上。 – jamadri 2014-10-08 19:43:33

1

更可能你還沒有defined the mass-assignment attributesEvents模型。

所以在你Events型號嘗試:

protected $fillable = array('limit', 'EventEnabled', 'SundayStart', 'MondayStart', 'TuesdayStart', 'WednesdayStart', 'ThursdayStart', 'FridayStart', 'SaturdayStart'); 

這是Laravel的安全保護功能,有助於防止對盲目允許任何屬性進行更新。

+0

我已經檢查過,對象中的每個變量都是可傳遞的數組。但是,即便如此,我並沒有大規模分配。我正在分配他們每個人,所以這個在這裏甚至不應該是一個問題。如果我用 - > update($ data)轉儲數組;我可以明白爲什麼我會處理這個問題,但這是我分別分配它們的時候。 – jamadri 2014-10-07 15:10:51