show用于将模型中的预定义数据传递给laravel中的视图

时间:2016-10-20 07:28:53

标签: php laravel laravel-5 eloquent

我有一些数组形式的预定义数据,我想访问我的视图。 我为此目的使用以下方法。 我在模型中定义了一个方法,它返回一个数组。

//function in my model calss of cars.

public function colors(){
  return ['white', 'blue','gray'];
}

当我这样称呼这个方法时:

$cars->colors();

这是我想在我的视图文件中使用的代码

@foreach($car->colors() as $color)
  <p> {!!$color!!}</p>
@endforeach

它显示以下错误:关系方法必须返回

类型的对象

如果我想要一个数组或来自我的模型对象或替代方式的数据,那么处理这种情况的正确方法是什么。

1 个答案:

答案 0 :(得分:1)

您可以使用Eloquent的访问者向您的模型添加自定义属性 - 请在此处查看更多详细信息:https://laravel.com/docs/5.3/eloquent-mutators#defining-an-accessor

在您的情况下,以下应该可以解决问题:

class Car extends Model {
  public function getColorsAttribute(){
    return ['white', 'blue','gray'];
  }
}

现在您应该可以使用以下方法访问颜色列表:

foreach ($car->colors as $color) {
  ...
}

您收到的错误似乎与其他内容有关 - 通常这意味着您正在尝试热切地加载不存在的关系。确保您的汽车型号上没有with('colors')的任何电话。