Я пытаюсь закодировать сайт социальной сети, такой как Facebook, в Laravel 5.8.У меня в /home
и в /profile
тот же список ваших друзей, но два разных контроллера (HomeController & ProfileController).Я не хочу копировать вставить один и тот же код для двух разных контроллеров.Как я могу решить эту проблему, поэтому я должен использовать свой код только один раз?
HomeController.php
public function index()
{
$friends = [];
$friendsID = Person_has_person::select('person2')->where('person1', Auth::user()->id)->get();
foreach ($friendsID as $friendID)
$friends[] = User::find($friendID->person2);
return view('home')->with('friends', $friends);
}
ProfileController.php
public function index()
{
$friends = [];
$friendsID = Person_has_person::select('person2')->where('person1', Auth::user()->id)->get();
foreach ($friendsID as $friendID)
$friends[] = User::find($friendID->person2);
return view('profile')->with('friends', $friends);
}
В моем файле web.php есть мои маршруты.
Route::get('/home', 'HomeController@index');
Route::get('/profile', 'ProfileController@index');
В моем шаблоне я использую это, чтобы показать своих друзей.
@if(count($friends) > 0)
@foreach($friends as $friend)
<ul>
<li>
<a href="/profile/{{$friend->id}}">{{$friend->firstname . ' ' . $friend->lastname}}</a>
<a class="text-danger"
href="/removeFriend/{{Auth::user()->id . '/' . $friend->id}}">[unfriend]</a>
</li>
</ul>
@endforeach
@else
<p>No friends available</p>
@endif
Как выМожно видеть, что у меня один и тот же код в двух разных контроллерах.Это не очень хорошее решение.Можете ли вы дать мне совет, как я могу написать его, чтобы он у меня был только один раз?