【问题标题】:“message”: "Undefined property: Illuminate\Database\Query\Builder::$map"“消息”:“未定义属性:Illuminate\Database\Query\Builder::$map”
【发布时间】:2021-06-04 18:25:31
【问题描述】:

尝试按 id 显示作者数据时,我不断收到此错误 当在api.php和公共函数中写Route::get('authors/{id}''App\Http\Controllers\Api\UserController@show');时显示($id){$user=User::findOrfail($id);Return new UserResource($user);}这个问题告诉我

Api.php

<?php
namespace App\Database\routes\Api;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
use Illuminate\Routing\Controller;
use App\Http\Controllers\Api;
Route::get('authors/{id}', 'App\Http\Controllers\Api\UserController@show');

UserController.php

<?php
namespace App\Http\Controllers\Api;
use App\Http\Resources\UserResource;
use App\Http\Resources\UsersResource;
use App\Models\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
    public function index()
    {
        $users =  \App\Models\User::paginate();
            return new UsersResource( $users);
    }
    public function store(Request $request) { }
    public function show($id)
    {
     //       UserResource(\App\Models\User::find($id) );
             return new UserResource(User::find($id));
    }
}

UserResource.php

<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\ResourceCollection;
use Illuminate\Http\Resources\Json\Resource;
class UserResource extends ResourceCollection
{
    public function toArray($request)
    {
        return parent::toArray($request);
    }
}

【问题讨论】:

    标签: php laravel api


    【解决方案1】:

    返回您的用户密钥和值

    return
            [
                'id' => $this->id,
                'name' => $this->name,
                'email' => $this->email,
                'created_at' => $this->created_at,
                'user' => new UserResource($this->user)
            ];
    

    【讨论】:

    • 但是我不想在show函数中返回数据的值,你有其他方法吗?
    【解决方案2】:
            public function index(Request $request)
                {
                    $users =  \App\Models\User::paginate();
            
            if( $request->is('api/*')){
                       
                        $users = UserResource::collection($users);
                        return $this->sendResponse(compact( users'));
                    }
             
                }
        
        that is user show api
    
    public function show($id ,Request $request)
        {
            $user = User::find($id);
        
         if( $request->is('api/*')){
                    $user = new UserResource($user);
                    return $this->sendResponse(compact('user'),$message);
                }
    }
    

    【讨论】:

    • 索引功能正常工作,但显示功能有问题
    • 你不能在你的方法上添加请求直接返回你的sendResponse
    • 你的方法很好,但它显示错误“消息未定义”我可以定义什么消息变量??
    【解决方案3】:

    尝试使用模型绑定

      public function show(User $user)
           {
     
             return new UserResource($user);
          }
    

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 2016-09-05
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 2016-11-27
      • 2014-04-23
      • 2014-04-25
      • 1970-01-01
      相关资源
      最近更新 更多