Как в модели правильно вызывать переменную.

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Как в модели правильно вызывать переменную.

Сообщение alexa777 »

Привет, из вьшки поста получаю картинки с помощью
$images = \common\models\Images::find()->andWhere(['refer' => 'board', 'post_id' => $model->id])->all();
Сделал функциию в модели Post чтобы выбирать нужные картинки для поста из любого места.

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

  public static function getBoardImages(){
        return Images::find()->andWhere(['refer' => 'board', 'post_id' =>'id'])->all();
    }
Не получается получить id поста 'post_id' =>'id' пробовал вот так 'post_id' =>$this->id не получается $model->id тоже.

Ка сделать правильно?

Спасибо

urichalex
Сообщения: 980
Зарегистрирован: 2015.08.07, 11:03

Re: Как в модели правильно вызывать переменную.

Сообщение urichalex »

В статических методах не может быть $this. Передавайте id gjcта в метод: getBoardImages($postId)

lenbord
Сообщения: 49
Зарегистрирован: 2016.01.12, 10:48
Контактная информация:

Re: Как в модели правильно вызывать переменную.

Сообщение lenbord »

Как отметил человек выше, нельзя в статических методах использовать $this.
Вы либо сделайте вот так:

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

public static function getBoardImages($postId){
    return Images::find()->andWhere(['refer' => 'board', 'post_id' =>$postId])->all();
}
и тогда все изображения во вью Вы сможете получить как:

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

$images = Post::getBoardImages(<postId>);
где <postId> id существующего поста в базе
или же вот так:

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

public function getBoardImages(){
    return Images::find()->andWhere(['refer' => 'board', 'post_id' =>$this->id])->all();
}
и тогда во вью Вы получаете изображения вот так:

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

$images = $post->getBoardImages(),
где $post это объект Вашей найденной публикации

andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Как в модели правильно вызывать переменную.

Сообщение andku83 »

тогда уже лучше сделать полноценную связь:

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

    public function getBoardImages()
    {
        return $this->hasMany(Images::class, ['post_id' => 'id'])
            ->andWhere(['refer' => 'board']);
    }

//использовать
$post->boardImages

alexa777
Сообщения: 299
Зарегистрирован: 2016.03.01, 17:38

Re: Как в модели правильно вызывать переменную.

Сообщение alexa777 »

Спасибо всем, помогло

Ответить