示例#1
0
 public function run()
 {
     $response = Yii::$app->getResponse();
     $response->format = 'json';
     $form = new DeathReasonGetForm();
     $form->attributes = Yii::$app->getRequest()->get();
     if (!$form->validate()) {
         $response->statusCode = 400;
         return ['error' => $form->getErrors()];
     }
     $query = DeathReason::find()->with(['type'])->orderBy('[[id]]');
     $form->filterQuery($query);
     return array_map(function ($model) {
         return $model->toJsonArray();
     }, $query->all());
 }
示例#2
0
 public function getDeathReasonNamesFromEvents()
 {
     try {
         if ($this->events === null || $this->events === '') {
             return [];
         }
         $events = Json::decode($this->events, false);
         if (!is_array($events) || empty($events)) {
             return [];
         }
         // ["key" => null] のデータを一回構築する
         // 後でこの key を取得して理由名取得に回す
         $ret = [];
         foreach ($events as $event) {
             if (is_array($event)) {
                 $event = (object) $event;
             }
             if (is_object($event) && isset($event->type) && isset($event->reason) && $event->type === 'dead') {
                 $ret[$event->reason] = null;
             }
         }
         if (empty($ret)) {
             return [];
         }
         // null だった理由名を埋める
         $reasons = namespace\DeathReason::find()->andWhere(['key' => array_keys($ret)])->all();
         foreach ($reasons as $reason) {
             $ret[$reason->key] = $reason->getTranslatedName();
         }
         return $ret;
     } catch (\Exception $e) {
         return [];
     }
 }