(关于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,我缺少什么?
答案 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;
}