不能使用Illuminate \ Database \ Eloquent \ Builder类型的对象作为数组

时间:2015-09-09 04:18:37

标签: php laravel-5

我希望查看具有特定ID的视频数据。

我的控制器是:

public function profile(){
    $data = Admin::with(array(5,6));
    return view('profile')->with('data',$data);
}

我想在post'5'中查看id

<div class="content-about">
    <p> {{ $data[5][post]}}  </p>
</div>

和另一个视图我将在post'6'

id
<div class="content-about">
    <p> {{ $data[6][post]}}  </p>
</div>

1 个答案:

答案 0 :(得分:2)

首先,您的查询不正确。 Model::with([...])渴望加载指定的关系。但是Admin::with(array(5,6))将数值传递给函数,它们将被忽略,因为with()期望它们是一个命名关系的字符串。所以with(array(5,6))实际上什么都不做,只需返回查询实例。

要使用主键5和6加载Admin,您需要使用whereIn()

$data = Admin::whereIn('id', array(5,6))->get();

现在您有结果数据集。然后,您希望按主键访问结果项。结果数据集$dataIlluminate\Database\Eloquent\Collection的一个实例,它通过keyBy()支持此功能。

您希望按主键id访问项目,因此您的代码应如下所示。

$data = Admin::whereIn('id', array(5,6))->get()->keyBy('id');