简体   繁体   中英

Yii “is not defined error” when updating a model property

Trying to wade my way through Yii here, learning on the fly. We migrated a project off a unix server and on to a windows server and are experiencing some date/time difficulties.

I currently have a model "Activities" with a couple of properties happend_on , happend_at . What I would like to do is set these properties to UTC time dynamically on the fly. However I keep getting a Property Activity.happend_on , Activity.happend_on is not defined error from the CActiveRecord.php. I read a couple of places about overriding the set methods in the model (didnt work) and at your peril, overriding the magic _set method, also didn't work. I really want to set these properties on the fly.

    $activity = $this->loadModel ( $id );
    $time = $activity->happened_on . " " . $activity->happened_at;
    date_default_timezone_set ( "UTC" );
    $utc_date = DateTime::createFromFormat (
        'm/d/Y H:i:s', gmdate ( "m/d/Y H:i:s", strtotime ( $time ) ), new DateTimeZone ( 'UTC' ));

    $date = $utc_date;
    $date->setTimeZone ( new DateTimeZone ( $time_zone ) );
    // THESE ARE THE LINES THAT FAIL - NEED TO UPDATE THE PROPERTIES.
    $activity->happend_on = $date->format("m/d/Y");
    $activity->happend_at = $date->format("H:i:s");

You spelled happend_on and happend_at wrongly.

You meant to use happened_on and happened_at with an extra e .

This is very simple if you read the error message carefully, which is exactly what it says:
The attributes could not be found because you misspelled them!

Next time, if you get an is not defined error , check for the attributes mentioned in the error message.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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