简体   繁体   English

Laravel更新不更新表

[英]Laravel update is not updating table

Ok, so my issue is, my ajax call isn't updating correctly. 好的,所以我的问题是,我的ajax调用未正确更新。 It's the same as many functions as I have, it's just not updating the values. 它与我拥有的许多功能相同,只是不更新​​值。 Although, I can run the query on it's own in mysql and it update ok. 虽然,我可以在mysql中自行运行查询,并且更新正常。 Function is below: 功能如下:

/*
 * "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!";
}

Below is an example ID getting passed and an example of the $data object that's getting passed. 下面是一个传递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"}

I'm confused as to why nothing is getting updated. 我对为什么什么都没有更新感到困惑。 Any help? 有什么帮助吗?

EDIT: Below I've included the code for my model so people won't have to question it... 编辑:下面,我已经包括了我的模型的代码,因此人们不必质疑它...

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

More than likely you have not defined the mass-assignment attributes your Events Model. 您很有可能尚未定义 Events模型的质量分配属性

So in your Events Model try: 因此,在您的Events模型中尝试:

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

This is a security feature of Laravel and helps to prevent against blindly allowing any attributes to be updated. 这是Laravel的安全功能,有助于防止盲目地更新任何属性。

The type being sent "string" for any checkbox wasn't going in because the values needed to be an (int) value or a (bool) value of '1' or '0'. 不会为任何复选框发送“字符串”的类型,因为这些值必须是(int)值或(bool)值“ 1”或“ 0”。 That was the issue. 这就是问题所在。 Database was set up a year ago by someone else and I didn't catch that until now. 数据库是在一年前由其他人建立的,直到现在我才意识到这一点。 It's fixed though. 它是固定的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM