简体   繁体   中英

Laravel: Object of class Illuminate\Database\Eloquent\Builder could not be converted to string

I am trying to loop through an array of ids to get data from another table, I mean I want to get latest queues of every schedule id we are looping in it.

So first i have $schedules :

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

And the foreach loop is like this:

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

when i return queues it's showing :

Object of class Illuminate\\Database\\Eloquent\\Builder could not be converted to string

The error that shows is related to you are not running the query, you need a ->get() at the end of Queue::...->where(...)->get() to do it.

if you dont do it, as Dhananjay Kyada say in his answer:

it will try to return a query object

But to return a response:

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

Next, we need to tackle one more thing.

If you are defining the variable $schedules and assigning it the value as it is shown in the question:

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

try to do it taking the JSON as string and converting it into a PHP variable with json_decode :

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

Then you can use the id values in you where clause:

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

Maybe because you are not getting the result from your query. Because it is just a query it will return a query object. You need to add ->get() in order to get the result. You can try the following code:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM