День добрый. Пишу модель, использую DAO. У меня в модели много методов и почему то внутри модели я не могу получить доступ к методам через $this.
class User extends Model {
public function getById($user_id) {
$user = Yii::$app->db->createCommand('SELECT * FROM {{%user}} WHERE id=:id')
->bindParam(':id', $user_id)
->queryOne();
$group = $this->getUserGroup($user['id']);
$user['group'] = $group;
return $user;
}
public function getUserGroup($user_id) {
$rows = (new \yii\db\Query())
->select('{{%group}}.id, {{%group}}.code, {{%group}}.name, {{%group}}.comment, {{%group}}.create_at, {{%group}}.update_at')
->from('{{%user_group}}')
->where(['user_id' => $user_id])
->join('INNER JOIN', '{{%group}}', '{{%group}}.id = {{%user_group}}.group_id')
->all();
return $rows;
}
}
Все работает если меняю
$this-> на
User::. Но это ведь не логично? И еще
$db = Yii::$app->db; в каждом методе создавать надо?? Потому что попробовал написать
public $db;
public function __construct() {
parent::__construct();
$this->db = Yii::$app->db;
}
Он даже конструктор не видит.
Вызываю метод "getById(1)" из модели формы, по этому ругается на него же. Почему в модели формы он ищет метод другой модели, хотя наследования не идет:
Unknown Method – yii\base\UnknownMethodException
Calling unknown method: app\models\form\Reg::addUserGroup()
Вызов в модели формы:
use yii\base\Model;
class Reg extends Model {
public function reg() {
return User::getById(1);
}
}