【问题标题】:Laravel equivalent for User::all() functionUser::all() 函数的 Laravel 等效项
【发布时间】:2020-05-23 01:51:49
【问题描述】:

各位,我对 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);
    }
}

【问题讨论】:

  • 请附上您的 UserResource 类代码。
  • 我编辑了我的帖子@Itzhak Avraham
  • 您是说class UserResource extends JsonResource 吗?
  • 在顶部我给出了这样的别名,使用 App\Http\Resources\User 作为 UserResource;

标签: php laravel api


【解决方案1】:

试试这个

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

【讨论】:

  • 非常感谢它正在工作,但是有了这个 $teachers = DB::table('users')->where('role', '=', 1)->get();我尝试了很多方法,但无论如何你的答案是最有帮助的,我选择你的答案是正确的
  • 快乐编码 :)
【解决方案2】:

我不知道你的情况,但在我的环境中,这些代码行工作得很好。尝试使用composer update 命令更新您的 Laravel。

【讨论】:

  • @NurbekBoymurodov 我已经编辑了我的答案。你使用的是什么版本的 Laravel?
  • 最新版本 6.13.1
【解决方案3】:

return UserResource::collection(User::where('role', '=', 1)-&gt;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')-&gt;where('role', '=', 1)-&gt;get()); 会给你结果。

【讨论】:

  • 如何制作连接表
  • 我需要 DB::table
猜你喜欢
  • 1970-01-01
  • 2012-06-22
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-04
  • 2021-03-02
相关资源
最近更新 更多