Laravel эквивалент для функции User :: all () - PullRequest
0 голосов
/ 07 февраля 2020

Ребята, у меня проблема с Laravel api.

В моем контроллере, когда я использую collection $teacher, все в порядке, но мне нужны отфильтрованные данные, поэтому, когда я использую коллекцию $teachers это дает мне ошибку. Ошибка: Call to undefined method Illuminate\\Database\\Query\\Builder::mapInto();

Я хочу отфильтрованные данные

    $teachers = DB::table('users')->where('role', '=', 1);
    $teacher = Users::all();
    return UserResource::collection($teachers);

Я пробовал это

$teachers = DB::table('users')->where('role', '=', 1)->get();
$teachers = DB::table('users')->where('role', '=', 1)->get()->toArray();

, поэтому мне нужно решение

это мой ресурс

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class User extends JsonResource
{
    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}

Ответы [ 3 ]

1 голос
/ 07 февраля 2020

Попробуйте это

$teachers = DB::table('users')->where('role', '=', 1);
$teacher = Users::all();
return new UserResource($teachers);
0 голосов
/ 07 февраля 2020

return UserResource::collection(User::where('role', '=', 1)->get()); Это должно работать для вас, вы можете попробовать?

Обновление

вы все равно можете объединять таблицы с eloquent, но если вы действительно хотите чтобы использовать DB::Table()

, вы должны указать свой метод toArray() следующим образом.

    public function toArray($request)
    {
        // return parent::toArray($request);
        return [
            'role' => $this->role,
            'id' => $this->id,
            'name' => $this->name,
            'email' => $this->email,
            'created_at' => $this->created_at,
            'updated_at' => $this->updated_at,
        ];
    }

и return UserResource::collection(DB::table('users')->where('role', '=', 1)->get()); даст вам результат.

0 голосов
/ 07 февраля 2020

Я не знаю о вашем, но в моей среде эти строки кода работают просто отлично. Попробуйте обновить Laravel, используя команду composer update.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...