我有一个多态关系的Likes
,可以";Videos
和Posts
。我正在使用API端点来存储类似的内容。
然而,我的LikeController
看起来像这样
public function store(StoreLikeRequest $request)
{
$video = Video::find($request->video);
$result = (new StoreVideoLikeAction($video, $request))->handle();
return $result;
}
我的路线是/api/like/store/
我怎么能改变这个功能,使StoreLikeRequest
知道什么模型(Post或视频),它是指自动从我的端点,以便我可以将其保存在数据库中?例如,如果我发布一个名为"post_id"的字段;或者"video_id",或者更好的选择是发送一个"id"。字段和"类型"。(模型)字段来解决这个问题?
或者我必须有多个端点,即/api/video/{video}/like
?同样的问题是,我仍然需要找出我们目前在StoreLikeRequest
中使用/保存的模型。
最终,我想避免使用基于"模型类型"的大型if/switch语句,我想知道是否有一种简单的"laravel"方法来实现这一点。
这应该能帮助你理解最好的方法:
https://laravel.com/docs/8.x/eloquent-relationships one-to-many-polymorphic-relations