【问题标题】:How to use morphMany with a custom function in a model如何在模型中使用 morphMany 和自定义函数
【发布时间】:2019-03-06 16:44:56
【问题描述】:

(这是关于 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,我错过了什么?

【问题讨论】:

  • 你忘了在foreach之后打开{
  • @dparoli 哦,哎呀..我将编辑示例代码。那不是错误正在发生;)而是找到一个很好的工作:)

标签: php laravel laravel-5 eloquent


【解决方案1】:

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

【讨论】:

  • 请不要编辑我的答案,这是我真正想要的答案,试试代码,看看你得到了什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 2020-06-21
  • 2014-09-01
相关资源
最近更新 更多