Как использовать morphMany с пользовательской функцией в модели - PullRequest
1 голос
/ 06 марта 2019

(Это о Laravel 5.8)

Я знаю, что вы можете создавать пользовательские функции в вашей модели, но я не могу понять, как создать пользовательскую функцию, которая использует данные из функции morphMany.

Что работает:
model.php:

public function images()
{
    return $this->morphMany('App\Image', 'owner');
}

page.blade.php:

@foreach($model->images() as $image)
    {{ $image->url }}
@endforeach


Это работает.Но я хочу создать функцию, которая, например, только возвращает плакат.Но когда я помещаю этот foreach в функцию внутри моей модели.Это не будет цикл через изображения.См. Следующий код:

Что не работает:
model.php:

public function images()
{
    return $this->morphMany('App\Image', 'owner');
}

public function poster()
{
    $images = $this->morphMany('App\Image', 'owner');

    foreach($images as $image)
    {
        /* THIS CODE WILL NEVER RUN SOMEHOW */
        if ($image->type == "poster")
        {
            return $image;
        }
    }
    return NULL;
}

Код просто возвращает NULL, что мне не хватает?

1 Ответ

0 голосов
/ 06 марта 2019

Вы хотели бы использовать метод доступа $model->images, который возвращает коллекцию, вместо конструктора запросов $model->images(), который возвращает построитель запросов, то есть:

//page.blade.php
@foreach($model->images as $image)
    {{ $image->url }}
@endforeach

// in Model    
public function poster()
{ 
    foreach($this->images as $image)
    {
        if ($image->type == "poster")
        {
            return $image;
        }
    }
    return NULL;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...