Skip to main content

YII, my sample model for search with relataionship

A model file for yii which has search fucntion which searches using relation ship:



<?php

/**
 * This is the model class for table "sf_category_slider".
 *
 * The followings are the available columns in table 'sf_category_slider':
 * @property integer $rec_id
 * @property integer $cat_id
 * @property string $brand_id
 * @property string $slider_image
 * @property string $slider_link
 */
class CategorySlider extends CActiveRecord {

    /**
     * Returns the static model of the specified AR class.
     * @return CategorySlider the static model class
     */
    
    public $category_name;
    
    public static function model($className=__CLASS__) {
        return parent::model($className);
    }

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

    /**
     * @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('slider_link', 'required'),
            array('cat_id', 'numerical', 'integerOnly' => true),
            array('brand_id', 'length', 'max' => 50),
            array('slider_link', 'length', 'max' => 255),
            array('slider_image', 'file', 'types' => 'jpg, gif, png', 'allowEmpty' => true),
            // The following rule is used by search().
            // Please remove those attributes that should not be searched.
            array('rec_id, cat_id, brand_id, slider_image, slider_link, category_name', '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(
            'cat_slider_relation_category' => array(self::BELONGS_TO, 'Category', 'cat_id'),
        );
    }

    /**
     * @return array customized attribute labels (name=>label)
     */
    public function attributeLabels() {
        return array(
            'rec_id' => 'Rec',
            'cat_id' => 'Category',
            'brand_id' => 'Brand',
            'slider_image' => 'Slider Image',
            'slider_link' => 'Slider Link',
        );
    }

    /**
     * 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('t.rec_id', $this->rec_id);
        $criteria->compare('t.cat_id', $this->cat_id);
        //$criteria->compare('brand_id', $this->brand_id);
        $criteria->addSearchCondition('t.brand_id', $this->brand_id);
        
                if(strlen($this->category_name))
                {
                    $criteria->with=array('cat_slider_relation_category.category_relation_cat_slider');
                    $criteria->addSearchCondition('cat_slider_relation_category.cat_name',$this->category_name,true);
                }
        
        $criteria->compare('t.slider_image', $this->slider_image, true);
        $criteria->compare('t.slider_link', $this->slider_link, true);

        return new CActiveDataProvider($this, array(
                    'criteria' => $criteria,
                ));
    }

}

?>



Popular posts from this blog

Yii, return to previous url after login or logout

If you want to return to your previous url after login or logout try this : <?php $this -> redirect (Yii :: app () -> request -> urlReferrer ); ?> To set the return url to be the url that was before the login page or registeration page was called you can put following code in views/layouts/main.php file : <?php //this checks id the controller action is not 'login' then it keeps the current url in returnUrl if (CController :: getAction () -> id != 'login' ) { Yii :: app () -> user -> setReturnUrl (Yii :: app () -> request -> getUrl ()); } ?>

Yii2: Using csrf token

Yii2: Using csrf token First, if you do not understand what is the CSRF token? and why should we use it, please refer to the following link : https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF) One of the new features of Yii2 is CSRF validation enabled by default. If you use ajax or basic form as follows : <form action='#' method='POST'> ........... </form> You will get an error exception : Bad Request (#400): Unable to verify your data submission That is because you do not submit csrf token. The easiest way if you dont care about csrf just disable it in main config : 'components' => [ 'request' => [ .... 'enableCsrfValidation'=>false, ], ..... ], Or in Controller : public function beforeAction($action) { $this->enableCsrfValidation = false; return parent::beforeAction($action); } So how to use Csrf Validation for your strong security website: * Wi