Как вы справляетесь с предпочтением многих разных моделей? - PullRequest
0 голосов
/ 09 июня 2018

Мне нужен ваш совет, как я могу лучше справиться с функцией "favorting".В настоящее время у меня есть следующие конечные точки:

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. До этого еда использовалась только как идентификатор.Нет, он использует название как слизень.Но мой любимый-кнопочный компонент просто знает имя класса и идентификатор для создания URL.Я не хочу писать, если дела устанавливают правильный URL.

Как вы справляетесь с этим?

Ответы [ 2 ]

0 голосов
/ 09 июня 2018

Итак, я получил свой собственный ответ:

Я использовал явное связывание Laravel Route.

В RouteServiceProvider:

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

В Web.php это только:

Route::post('/api/favorite/{type}/{favorite}', 'FavoriteController@store');
Route::delete('/api/favorite/{type}/{favorite}', 'FavoriteController@destroy');
0 голосов
/ 09 июня 2018

Самый простой способ - использовать пакет - Laravel Likeable Plugin

Или, если вы хотите создать эту функциональность с нуля: Учебное пособие

Вам также следует изучить Полиморфизм

Также есть ресурс под названием Laracasts .В нем много бесплатного контента, но некоторые требуют членства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...