Страница 1 из 1

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

Добавлено: 2018.03.12, 15:50
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 тоже.

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

Спасибо

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

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

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

Добавлено: 2018.03.12, 18:15
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 это объект Вашей найденной публикации

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

Добавлено: 2018.03.12, 18:45
andku83
тогда уже лучше сделать полноценную связь:

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

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

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

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

Добавлено: 2018.03.13, 16:15
alexa777
Спасибо всем, помогло