如何在模型中将morphMany与自定义函数一起使用

时间:2019-03-05 23:19:20

标签: php laravel laravel-5 eloquent

(关于Laravel 5.8)

我知道您可以在模型中创建自定义函数,但是我不知道如何制作一个使用来自morphMany函数的数据的自定义函数。

有效方法:
model.php:

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

page.blade.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;
}


这可行。但是我想创建一个函数,例如仅将海报发回。但是当我将foreach放置在模型中的函数中时。它不会循环通过图像。请参见以下代码:

什么不起作用:
model.php:

{{1}}

代码仅返回NULL,我缺少什么?

1 个答案:

答案 0 :(得分:0)

您想使用返回集合的访问器$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;
}