Laravel return 有很多关系

Laravel return Has many relationship

关系是可以关联多个事件的用户。

我希望能够进行 API 调用以获取用户关联的所有事件。我已将主键从 id 更改为 uuid。我也将外键关联到事件 table。事件 table 中的主键也是一个名为 UUID 的列。

我遇到错误

Return value of App\Http\Controllers\UsersController::getAllEvents() must be an instance of App\Http\Resources\UserResource, instance of Illuminate\Database\Eloquent\Relations\HasMany returned

我的路线table:

Route::apiResource('/users', 'UsersController');
Route::apiResource('/events', 'EventsController');
Route::get('/users/allevents/{user}', 'UsersController@getAllEvents');

所以我点击的 URL 是:

http://127.0.0.1:8000/api/users/allevents/0a0jqZ7qzuhemKnzB3wOPUc2Ugp2

0a0jqZ7qzuhemKnzB3wOPUc2Ugp2是用户的UUID。我想获取与该用户关联的所有事件。

我的用户模型:

class User extends Model
{
    use Notifiable;
    use SoftDeletes;

    protected $dates = ['deleted_at'];

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'uuid', 'email', 'firstName', 'lastName', 'level', 'venmo'
    ];

    public function getRouteKeyName()
    {
        return 'uuid';
    }

    public function events() {
        return $this->hasMany(Event::class);
    }


}

我的事件模型:

class Event extends Model
{
    use SoftDeletes;
    protected $table = 'events';
    protected $dates = ['deleted_at'];
//    public function getRouteKeyName()
//    {
//        return 'uuid';
//    }

    protected $fillable = [
        'id', 'availableSpots', 'uuid', 'chosenDate', 'date', 'epochTime', 'level', 'price', 'time', 'created_at', 'updated_at', 'user_uuid'
    ];
    public $incrementing = false;
    protected $primaryKey = 'uuid';
    protected $keyType = 'string';


    public function user(){
        return $this->belongsTo(User::class, 'user_uuid', 'uuid');
    }
}

我的用户控制器:

class UsersController extends Controller
{

    public function show(User $user): UserResource
    {

        return new UserResource($user);
    }



    /**
     * @param Request $request
     * @param User $user
     * @return UserResource
     */
    public function update(Request $request, User $user): UserResource
    {
        $user->update($request->all());


        return new UserResource($user);

    }


    /**
     * @param User $user
     * @return UserResource
     * @throws \Exception
     */
    public function destroy(User $user): UserResource
    {
        $user->delete();

        return new UserResource($user);
    }

    public function getAllEvents(User $user): UserResource {
        return $user->events();
    }
}

您使用的方法类型错误return它没有returnUserResource它return事件数组所以通过删除错误的类型它将起作用

   public function getAllEvents(User $user) {
        return $user->events;
    }
public function getAllEvents(User $user)
{
    return $user->events;
}