Почему в phpstorm в связях моделей className() перечеркнут

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
mika_di
Сообщения: 218
Зарегистрирован: 2015.09.24, 11:57

Почему в phpstorm в связях моделей className() перечеркнут

Сообщение mika_di »

Здравствуйте, подскажите, пожалуйста, в чем причина
делаю связь в модели

Код: Выделить всё

public function getCatphotos()
    {   
        return $this->hasOne(CatPhotos::className(), ['id' => 'cat_id']);
    }
из-за чего className() может быть перечеркнуто?
slo_nik
Сообщения: 344
Зарегистрирован: 2013.10.07, 19:08

Re: Почему в phpstorm в связях моделей className() перечеркнут

Сообщение slo_nik »

Доброе утро.
Потому, что className() объявлен "deprecated".
http://www.yiiframework.com/doc-2.0/yii ... e()-detail
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Почему в phpstorm в связях моделей className() перечеркнут

Сообщение Loveorigami »

а как тогда в таком случае сделать?
Когда класс (Town) берется из DI

Код: Выделить всё

    /**
     * init mmodel
     */
    public function init()
    {
        $container = Yii::$container;
        $this->_town = $container->get(TownAdapterInterface::class);
        parent::init();
    }

    /**
     * Город
     * @return ActiveQuery
     */
    public function getTown()
    {
        /** @var ActiveRecord $town */
        $town = $this->_town;
        $pk = $this->_town->getPk();
        return $this->hasOne($town::className(), [$pk => 'town_id']);
    }
$town::class - выдает ошибку
Auramel
Сообщения: 80
Зарегистрирован: 2017.11.17, 14:39
Откуда: Russia, Ufa
Контактная информация:

Re: Почему в phpstorm в связях моделей className() перечеркнут

Сообщение Auramel »

указать название класса явно, не?

Код: Выделить всё

TownAdapterInterface::class
или

Код: Выделить всё

get_class($object)
Loveorigami
Сообщения: 977
Зарегистрирован: 2014.08.27, 21:54

Re: Почему в phpstorm в связях моделей className() перечеркнут

Сообщение Loveorigami »

TownAdapterInterface::class - это интерфейс, который из контейнера связан с моделью городов из модуля geo

TownAdapterInterface::class => modules\geo\Town::class.

Насчет второго - попробую.
Ответить