Wie um zu überprüfen, ob das Modell haben bestimmte Eigenschaft oder nicht?

Ich möchte erstellen Sie eine neue model-Klasse, die erweitert werden, in allen anderen Klassen. Ich will auto einige Felder als admin addind/Bearbeitung eines Datensatzes. also createdDate, createdIp, updatedDate, updatedIp..etc.

Nun mein Problem alle Felder werden nicht in allen Modellen. Ich will also prüfen ob das Objekt hat createdDate Eigenschaft nur dann, setzen Sie den Wert. Wenn es kein Zustand und das Modell hat nicht createdDate Mitglied, dann wird es Fehler generieren. Unten ist der code was ich versuche. Aber es funktioniert nicht.

public function beforeSave()
{ 
            if(isset($this->createdDate))
                    die('this model have createdDate field');
            else
                    die('this model does not have createdDate field');
}

Modell kann nicht geradlinig, es kann verlängern Datenbank-Tabelle Verwandte Klasse automatisch. Unten ist die gedruckte Objekt. createdDate Feld ist in der privaten Liste.

Wenn ich mit var_dump(property_exists($this, 'createdDate')); es gibt mir false.

AdvertisementRate Object
(
    [bannerLocation_search] => 
    [bannerType_search] => 
    [_md:private] => CActiveRecordMetaData Object
        (
            [tableSchema] => CMysqlTableSchema Object
                (
                    [schemaName] => 
                    [name] => tbl_advertisement_rate
                    [rawName] => `tbl_advertisement_rate`
                    [primaryKey] => advertisementRateId
                    [sequenceName] => 

                    [columns] => Array
                        (
                            [createdDate] => CMysqlColumnSchema Object
                                (
                                    [name] => createdDate
                                    [rawName] => `createdDate`
                                    [allowNull] => 
                                    [dbType] => datetime
                                    [type] => string
                                    [defaultValue] => 
                                    [size] => 
                                    [precision] => 
                                    [scale] => 
                                    [isPrimaryKey] => 
                                    [isForeignKey] => 
                                    [autoIncrement] => 
                                    [_e:private] => 
                                    [_m:private] => 
                                )

Mir bitte helfen, fügen Sie diese Logik.


ja.. CActiveRecord verlängert zu meiner Klasse.

MasterAdmin.php

class MasterAdmin extends CActiveRecord
{
    public function beforeSave()
    { 
                echo '<pre>';
                var_dump(property_exists($this, 'createdDate')); 
                exit;
    }
}

User.php

class User extend MasterAdmin 
{
   //So whenever any record added or edited, beforeSave will be called and i can autoset createddate value.

}
  • ist dies zu u helfen ??? property_exists() .. Check Handbuch für dieses -- php.net/manual/en/function.property-exists.php ich denke, das ist, was u suchst
  • Suchen Sie in Ihrer gedruckten Objekts ist unklar, welches Objekt Ihr beforeSave() Methode gehört aber in jedem Fall createdDate ist keine Eigenschaft, es ist ein array-Schlüssel der columns Eigentum des CMysqlTableSchema Objekt. Vorausgesetzt beforeSave ist eine Methode des Objekts, es wäre isset($this->columns['createdDate']) aber es ist schwer zu wissen, für sicher, dass da die Verschachtelung.
  • was framework verwenden Sie ?
InformationsquelleAutor VibhaJ | 2012-06-14
Schreibe einen Kommentar