Specialization.php 2.61 KB
<?php

namespace common\models;

use Yii;
use yii\helpers\ArrayHelper;

/**
 * This is the model class for table "specialization".
 *
 * @property integer $specialization_id
 * @property integer $specialization_pid
 * @property string $specialization_name
 * @property string $image
 * @property string $background
 */
class Specialization extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'specialization';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['specialization_pid','status'], 'integer'],
            [['specialization_pid'], 'default', 'value' => '0',],
            [['specialization_name'], 'required'],
            [['specialization_name','image','background'], 'string', 'max' => 255],
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'specialization_id' => Yii::t('app', 'specialization_id'),
            'specialization_pid' => Yii::t('app', 'specialization_pid'),
            'specialization_name' => Yii::t('app', 'specialization_name'),
            'specialization_parent_name' => Yii::t('app', 'specialization_parent_name'),
            'image' => Yii::t('app', 'image'),
            'background' => Yii::t('app', 'background'),
            'status' => Yii::t('app', 'status'),
        ];
    }

    public static function specializationsList(){


        $specializationArray = [];

        $specialization = Specialization::find()->where(['specialization_id'=> Specialization::find()->select('specialization_id')
            ->andWhere('specialization_pid != 0')
            ->column()])
            ->all();

        foreach(ArrayHelper::index($specialization,'specialization_id') as $spec){
            $array = $spec->hasChildrenInArray($specialization);
            if($array){
                $specializationArray[$spec->specialization_name] = $array;
            }
        }

        return $specializationArray;


    }


    public function getParent()
    {
        return $this->hasOne(self::className(), ['specialization_id' => 'specialization_pid']);
    }

    public function getChildren()
    {
        return $this->hasMany(self::className(), ['specialization_pid' => 'specialization_id']);
    }

    public function hasChildrenInArray($array){
        $array =  ArrayHelper::map($array,'specialization_id', 'specialization_name','specialization_pid');

        if(isset($array[$this->specialization_id])){
            return $array[$this->specialization_id];
        } else {
            return false;
        }

    }

}