Catalog.php 3.13 KB
<?php

namespace common\models;

use Yii;
use yii\data\ActiveDataProvider;

/**
 * This is the model class for table "catalog".
 *
 * @property integer $id
 * @property integer $parent_id 
 * @property string $cover
 * @property string $options
 * @property integer $status
 * @property integer $sort
 */
class Catalog extends \yii\db\ActiveRecord
{  
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'catalog';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['parent_id', 'status', 'sort'], 'integer'], 
            [['cover'], 'string', 'max' => 32], 
        ];
    }
  
    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'catalog_id' => Yii::t('app', 'ID'),
            'parent_id' => Yii::t('app', 'Parent ID'),
            'cover' => Yii::t('app', 'Cover'), 
            'status' => Yii::t('app', 'Status'),
            'sort' => Yii::t('app', 'Sort'),
        ];
    }
  
    /** 
     * Выполняет поиск по параметрам
     * @param array $param принимает [catalog_id, lang_id, return_one, return_field, show_all]
     * @return array one | array all | string значение масива
     */
    public function finInfo (array $params = [])
    {
        Tools::ifNotExist ($params, array (
            'catalog_id' => false,
            'lang_id' => false,
            'return_one' => false,
            'return_field' => false,
            'show_all' => false,
            'to_array' => true,
        )); 

        $model = new Catalog();
        
        $query = $model->find()->select('*'); 
        
        $query->joinWith(['relationCatalogLang2']);
 
        $WHERE = array ();
 
        if ($params['catalog_id'] !== false)
        {
            $WHERE['catalog.catalog_id'] = $params['catalog_id'];
        }

        if ($params['lang_id'] !== false)
        {
            $WHERE['catalog_i18n.lang_id'] = $params['lang_id'];
        }

        if (! empty ($WHERE))
        { 
            $query->where($WHERE);
        }
        
        if ($params['to_array'] !== false)
        {
            $query = $query->asArray();
        }

        if ($params['return_one'] !== false || $params['return_field'] !== false)
        {
    
            $result = $params['return_field'] !== false ? $query->one($params['return_field']) : $query->one();  
        }
        else 
        {
            $result = $query->all(); 
        }
 
        return $result; 
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getRelationCatalogLangPlus()
    { 
        return $this->getRelationCatalogLang2()->where(['lang_id' => yii::$app->params['lang_id']]);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getRelationCatalogLang2()
    {
        return $this->hasOne(CatalogLang::className(), ['catalog_id' => 'catalog_id']);
    }

    public function getTitle()
    {
        return $this->relationCatalogLangPlus->title;
    }

    public function getParentTitle()
    {
        return $this->relationCatalogLangPlus->title;
    }
}