gpt4 book ai didi

php - API - 处理嵌套资源 (Laravel)

转载 作者:行者123 更新时间:2023-12-04 02:14:12 27 4
gpt4 key购买 nike

在 Laravel(使用 Fractal Transformers)中,我试图弄清楚如何准确地处理嵌套资源。假设我有这些路线:

Route::resource('user', 'UserController');
Route::resource('user.activity', 'UserActivityController');

因此,如果我想获取所有用户,则 uri 为 /user ,如果我想要用户 5,则为 /user/5
现在,如果我想要用户的 Activity,则 uri 是 user/1/activity

这是我有点困惑的地方。在 UserActivityController 中,您可能有:
public function index($user_id)
{
$user = $this->user->find($user_id)->activity;
return $this->respondWithItem($user, $this->transformer);
}

所以这就是我感到困惑的地方:

1) 对于每个嵌套资源,我是否继续获取顶级父资源(在本例中为 User)?可以说 user 嵌套了 3 或 4 层深的资源(即 /user/1/activity/5/mentions/6/somethng-else )?每个资源 Controller 是否只需要从顶部开始并向下工作?

2) 因为我使用的是 Fractal,所以它支持 includes,它允许我通过将某些数据附加到查询字符串中的 includes 来根据需要加载相关数据。事实上,它非常灵活,我觉得我可以使用一个基础(如 User )并从巧妙的 include 使用中获取我需要的所有其他数据。那么,与其使用子资源和子资源 Controller ,不如这样做?

最佳答案

是的,您需要使用 id 获取模型。即使它是嵌套资源,它也不会共享任何数据。因此,您必须获取每个 Controller 中的所有内容。

例如:

namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class UserActivityController extends Controller
{
/**
* Show the specified user activity.
*
* @param int $userId
* @param int $acitivityId
* @return Response
*/
public function show($userId, $acitivityId)
{
// get the user, and then activity
}


/**
* Show all activities from a user.
*
* @param int $userId
* @return Response
*/
public function show($userId)
{
//
}



}

或者您可以扩展 UserController 并在 __constructor 中获取 $user 模型。这样它就可以在 UserActivityController 中使用

关于php - API - 处理嵌套资源 (Laravel),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35492780/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com