2012-12-20 5 views
1

Je suis débutant avec Yii et j'ai utilisé GII pour créer une table CURD. Tout fonctionne bien, mais je ne veux récupérer que les données de la base de données en plaçant une clause where (par exemple "où le genre du client est masculin)." Je ne trouve pas où les données sont extraites de la base de données. d'insérer la clause WHERE dans le code.Ajout d'où fermer sur Gii généré CRUD

comme vous le savez le Gii généré modèle, le contrôleur et le fichier de vue. le fichier modèle est comme ci-dessous. Mon point de vue utilisé CGridView pour générer la table CRUD.

public static function model($className = __CLASS__) { 
    return parent::model($className); 
} 

/** 
* @return string the associated database table name 
*/ 
public function tableName() { 
    return 'test_prefixtbl_client_local'; 
} 

/** 
* @return array validation rules for model attributes. 
*/ 
public function rules() { 
    // NOTE: you should only define rules for those attributes that 
    // will receive user inputs. 
    return array(
     array('client_id', 'required'), 
     array('client_id', 'length', 'max' => 15), 
     array('surname, forename', 'length', 'max' => 20), 
     array('title', 'length', 'max' => 6), 
     array('status', 'length', 'max' => 8), 
     array('dob', 'safe'), 
     // The following rule is used by search(). 
     // Please remove those attributes that should not be searched. 
     array('client_id, surname, forename, title, status, dob', 'safe', 'on' => 'search'), 
    ); 
} 

/** 
* @return array relational rules. 
*/ 
public function relations() { 
    // NOTE: you may need to adjust the relation name and the related 
    // class name for the relations automatically generated below. 
    return array(
    ); 
} 

/** 
* @return array customized attribute labels (name=>label) 
*/ 
public function attributeLabels() { 
    return array(
     'client_id' => 'Client ID', 
     'surname' => 'Surname', 
     'forename' => 'Forename', 
     'title' => 'Title', 
     'status' => 'Status', 
     'dob' => 'Date of birth (yyyy-mm-dd)', 
     'actions' => 'Actions', 
    ); 
} 

/** 
* Retrieves a list of models based on the current search/filter conditions. 
* @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. 
*/ 
public function search() { 
    // Warning: Please modify the following code to remove attributes that 
    // should not be searched. 

    $criteria = new CDbCriteria; 

    $criteria->compare('client_id', $this->client_id, true); 
    $criteria->compare('surname', $this->surname, true); 
    $criteria->compare('forename', $this->forename, true); 
    $criteria->compare('title', $this->title, true); 
    $criteria->compare('status', $this->status, true); 
    $criteria->compare('dob', $this->dob, true); 

    return new CActiveDataProvider($this, array(
       'criteria' => $criteria, 
       'sort' => array(
        'defaultOrder' => 'dob DESC', 
       ), 
      )); 
} 

Répondre

1

Vous avez deux façons de faire votre requête, l'une utilisant Query Builder (tutorial here) comme ceci:

$clientLocalArray = Yii::app()->db->createCommand() 
->select() 
->from("test_prefixtbl_client_local") 
->where("gender = :gender", array(":gender"=>$gender)) 
->queryAll(); 

Ou vous pouvez utiliser l'enregistrement actif lui-même (tutorial here) comme ceci:

$clientLocalArrayObjects = ClientLocal::model()->findAllByAttributes(array(
"gender" => $gender 
)); 

Tout doute, demandez! :)

+0

Mais où dois-je placer ces codes dans ?, dans le modèle ?, puis dans quelle méthode/fonction de modèle? – Sahil

+0

dans la fonction d'action des contrôleurs –

+0

Oui, dans la fonction d'action des contrôleurs, et transmettez les résultats à utiliser dans la méthode $ this-> render(). –

Questions connexes