Я работаю над добавлением в избранное и просмотра списка избранного на моем сайте.
Мне удалось создать 2 таблицы
Таблицы пользователей с идентификатором, именем, фамилией, фотографией, типом и адресом электронной почты
A избранные таблицы с id, user_id, favableable_id, созданный_at и updated_at
Я пытался реализовать его таким образом, чтобы, когда пользователь, подключенный к его учетной записи, нажимал кнопку «Добавить в избранное», он добавлял выбранного пользователя в свой список избранного.
Я пытался сделать это таким образом, но это не совсем сработало и запутался в процессе.
Это мои веб-маршруты
Route::post('favorite/{user}', 'FavoriteController@favoriteUser')->name('jobber.fav.store');
Route::post('unfavorite/{user}', 'Favorite@unFavoriteUser');
Route::get('my_favorites', 'UsersController@myFavorites')->middleware('auth');
Это мой любимый контроллер
/**
* Favorite a particular jobber
*
* @param User $user
* @return Response
*/
public function favoriteUser(User $user)
{
Auth::user()->favorites()->attach($user->id);
return back();
}
/**
* Unfavorite a particular post
*
* @param User $user
* @return Response
*/
public function unFavoriteUser(User $user)
{
Auth::user()->favorites()->detach($user->id);
return back();
}
а это мой пользовательский контроллер
/**
* Get all favorite posts by user
*
* @return Response
*/
public function myFavorites()
{
$myFavorites = Auth::user()->favorites;
return view('users.my_favorites', compact('myFavorites'));
}
И маршрут, который добавляет в список избранных
<div class="col-lg-4">
<a class="apply-thisjob" href="#" title=""><i class="la la-paper-plane"></i>Recherchez d'autres jobbeurs</a>
<a class="add-tofavorite" href=" {{ route('jobber.fav.store', ['id'=>$result->id]) }}" title=""><i class="la la-heart-o"></i>Add to my favorites</a>
</div>
А это my_favor.blade.php
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="page-header">
<h3>My Favorites</h3>
</div>
@forelse ($myFavorites as $myFavorite)
<div class="panel panel-default">
<div class="panel-heading">
{{ $myFavorite->name}}
</div>
<div class="panel-body">
{{ $myFavorite->photo}}
</div>
</div>
@empty
<p>You have no favorite posts.</p>
@endforelse
</div>
и внутри моей модели пользователя я добавил это
public function favorites()
{
return $this->belongsToMany(Favorite::class, 'favorites', 'user_id', 'favoriteable_id')->withTimeStamps();
}
А это моя любимая модель
public function user()
{
return $this->belongsTo('App\User');
}
Кто-нибудь может мне помочь? Или любые предложения о том, как заставить это работать .. Заранее спасибо.