Laravel:Illuminate \ Database \ Eloquent \ Builder类的对象无法转换为字符串

时间:2019-06-21 19:04:04

标签: php laravel

我正在尝试遍历id数组以从另一个表中获取数据,我的意思是我想获取我们正在其中循环的每个schedule id的最新队列。

所以首先我有 $ schedules

  

$ schedules = [{“ id”:19},{“ id”:18},{“ id”:15}]

foreach循环是这样的:

$queues= [];
foreach ($schedules as $schedule) {
     $queues[] = Queue::withTrashed()
                     ->latest()
                     ->where('schedule_id', $schedule);
}
return $queues;

当我返回队列时,它显示为:

  

Illuminate \ Database \ Eloquent \ Builder类的对象无法转换为字符串

2 个答案:

答案 0 :(得分:1)

可能是因为您没有从查询中得到结果。因为它只是一个查询,所以它将返回一个查询对象。您需要添加personEntity = { EyeColorId = 5, EyeColor = { Id = 5, Color = "Blue" } } 才能获得结果。您可以尝试以下代码:

->get()

答案 1 :(得分:1)

显示的错误与您没有运行查询有关,您需要在->get()的末尾添加Queue::...->where(...)->get()

如果您不这样做,如Dhananjay Kyada在回答中所说:

  

它将尝试返回查询对象

但要返回响应:

The Response content must be a string or object implementing __toString()

接下来,我们需要解决另外一件事。

如果您要定义变量$schedules并为它分配问题中显示的值:

  

$ schedules = [{“ id”:19},{“ id”:18},{“ id”:15}]

尝试以JSON作为字符串并使用json_decode将其转换为PHP变量:

$schedules = json_decode('[{"id":19},{"id":18},{"id":15}]');

然后,您可以在where子句中使用id值:

->where('schedule_id', $schedule->id)->get()