你如何处理许多不同的模型?

时间:2018-06-09 17:34:43

标签: laravel

我需要你的建议我如何才能更好地处理“优惠”功能。目前,我有这些终点:

Route::post('/api/favorite/food/{food}', 'FavoriteController@store');
Route::delete('/api/favorite/food/{food}', 'FavoriteController@destroy');

Route::post('/api/favorite/profiletweet/{profiletweet}', 'FavoriteController@store');
Route::delete('/api/favorite/profiletweet/{profiletweet}', 'FavoriteController@destroy');

@store用于收藏模型,@ destroy用于收藏。

public function store($model)
{
    $model->favorite();
}

public function destroy($model)
{
    $model->unfavorite();
} 

所以这很有效,但现在我有两个新问题要处理:

  1. 我正在创建另外两个也可以收藏的模型。因此,只有两行路线会很好,而不是(2 * n)
  2. 之前那个食物只用作slu slu id。不,它使用标题作为slug。但我最喜欢的按钮组件只知道类名和构造URL的id。如果要设置正确的URL,我不想写。
  3. 你是如何处理的?

2 个答案:

答案 0 :(得分:0)

最简单的方法是使用包 - Laravel Likeable Plugin

或者,如果您想从头开始构建此功能:Tutorial

您还应该查看Polymorphism

还有一个名为Laracasts的资源。它有很多免费内容,但有些需要会员资格。

答案 1 :(得分:0)

所以我得到了自己的anwser:

我使用了Laravel Route Explicit Binding。

在RouteServiceProvider中:

array([[[ 7., 10.],
        [19., 22.]],

       [[15., 22.],
        [43., 50.]]], dtype=float32)

在Web.php中它只是:

Route::bind('favorite', function($value){
   if (request()->route()->hasParameter('type')){
        $class = 'App\\'.request()->type;
        $model = new $class();
        return $model->findOrFail($value);
   }
   abort(404);
});