Laravel更新不更新表

时间:2014-10-06 22:33:59

标签: php mysql laravel laravel-4 eloquent

好的,我的问题是,我的ajax调用没有正确更新。它与我拥有的许多功能相同,它只是不更新​​值。虽然,我可以在mysql中运行它自己的查询,它更新确定。功能如下:

/*
 * "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以及传递的$ data对象的示例。

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

2 个答案:

答案 0 :(得分:1)

您很可能没有defined the mass-assignment attributes Events模型。

所以在你的Events模型中尝试:

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

这是Laravel的一项安全功能,有助于防止盲目地允许更新任何属性。

答案 1 :(得分:0)

正在发送的类型&#34;字符串&#34;任何复选框都没有进入,因为值必须是(int)值或(bool)值&#39; 1&#39;或&#39; 0&#39;。那就是问题所在。数据库是一年前由其他人建立的,到目前为止我还没有抓住它。虽然它已经解决了。