Как вызвать функцию из другой модели? - PullRequest
0 голосов
/ 09 июля 2019

Я практикую yii1.1. У меня есть две модели, которые имеют одинаковую функцию, как их объединить?

class Issue extends TrackStarActiveRecord
...
{
public function getUserText($user_id=null)
    {
        $sql="SELECT username FROM tbl_user WHERE id= $user_id";
        $command = Yii::app()->db->createCommand($sql);
        $username = $command->queryAll();
        return $username;
    }
}


class Project extends TrackStarActiveRecord
{
...
public function getUserText($user_id=null)
    {
        $sql="SELECT username FROM tbl_user WHERE id= $user_id";
        $command = Yii::app()->db->createCommand($sql);
        $username = $command->queryAll();
        return $username;
    }
}

Я хочу вызвать функцию getUserText () из двух разных представлений, но я не хочу писать одну и ту же функцию в двух разных моделях. Поэтому мне нужно объединить их.

1 Ответ

0 голосов
/ 09 июля 2019

Не стоит дублировать код и извлекать имя пользователя из классов, которые не описывают пользователей. Вы можете поместить метод в класс User:

public $id;    
public function getUserText()
        {
            $sql="SELECT username FROM tbl_user WHERE id= $this->id";
            $command = Yii::app()->db->createCommand($sql);
            $username = $command->queryAll();
            return $username;
        }
    }

и выполните его:

$user = new User();
$user->id = 55;
$username = $user->getUserText(); // better call it getName()

Другой способ - использовать ActiveRecord, см. Документацию Yii об этом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...