Area.php 2.24 KB
<?php

namespace frontend\modules\map\models;

use yii\db\{
    ActiveRecord, ActiveQuery
};
//
use thread\app\model\interfaces\BaseFrontModel;
//
use common\modules\map\models\AreaLang;


/**
 * Class Area
 *
 * @package frontend\modules\map\models
 * @author Alla Kuzmenko
 * @copyright (c) 2017
 *
 *
 * @property \yii\db\ActiveQuery $lang
 */
class Area extends \common\modules\map\models\Area implements BaseFrontModel
{
    /**
     *
     * @return array
     */
    public function behaviors()
    {
        return [];
    }

    /**
     *
     * @return array
     */
    public function scenarios()
    {
        return [];
    }

    /**
     *
     * @return array
     */
    public function attributeLabels()
    {
        return [];
    }

    /**
     *
     * @return array
     */
    public function rules()
    {
        return [];
    }

    /**
     * @return mixed
     */
    public static function find()
    {
        return parent::find()->innerJoinWith(["lang"])->enabled()->indexBy('id');
    }

    /**
     * @return mixed
     */
    public static function findBase()
    {
        return self::find()->orderBy(['position' => SORT_ASC]);
    }

    /**
     *
     * @param integer $id
     * @return ActiveRecord|null
     */
    public static function findById($id)
    {
        return self::findBase()->byID($id)->one();
    }

    /**
     *
     * @param string $alias
     * @return ActiveRecord|null
     */
    public static function findByAlias($alias)
    {
        return null;
    }

    /**
     * @return array
     */
    public static function getAllAsArray()
    {
        return self::find()->asArray()->indexBy('id')->all() ?? [];
    }

    /**
     * @return array
     */
    public static function getAll()
    {
        return self::find()->indexBy('id')->all() ?? [];
    }


    /**
     *
     * @return string
     */
    public function getUrl($scheme = false)
    {
        return null;
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getLang()
    {
        return $this->hasOne(AreaLang::class, ['rid' => 'id'])->asArray();
    }


    /**
     * @return \yii\db\ActiveQuery
     */
    public function getItem()
    {
        return $this->hasOne(Item::class, ['area_id' => 'id'])->asArray();
    }
}