로그인 한 사용자가 데이터베이스에서 보낸 이메일을 표시하고 싶습니다.
다음은 경로 코드입니다.
Route::get('/myEmails/{id}','PagesController@myEmailsShow');
이것은 컨트롤러의 기능입니다.
public function myEmailsShow($id)
{
$myEmails = DB::table('emails')->where('user_id',$id)->get();
return view('content.myEmails', compact('myEmails'));
}
사용자가 페이지를 열기 위해 클릭하는 링크입니다.
@if(Auth::check())
<a class="nav-link text-white" href="/myEmails/{id}"> my emails</a>
@endif
그리고 여기에 데이터를 표시하고 싶은 곳 (테스트의 이름 만 표시합니다) :
<div class="row">
@foreach($myEmails as $myEmail)
{{$myEmail->name}}
@endforeach
</div>
여기서 목표를 달성하는 가장 좋은 방법 hasMany
은 사용자와 이메일 간의 관계를 사용하는 것입니다 (이메일이 모델 인 경우).
//User.php
public function emails()
{
return $this->hasMany('App\Models\Email');
}
컨트롤러 myEmailsShow
에서 생성자 의 메서드에 Auth 미들웨어를 적용합니다 .
//PagesController.php
public function __construct()
{
$this->middleware('auth')->only(['myEmailsShow']);
}
그런 다음 myEmailsShow
방법에서 다음과 같이 수행하십시오.
//PagesController.php
public function myEmailsShow()
{
// Middleware Eliminates the need for ID in the function.
$user = auth()->user();
$myEmails = $user->emails;
return view('content.myEmails', compact('myEmails'));
}
경로에서 ID 매개 변수를 제거하고 Route::get('/myEmails', 'PagesController@myEmailsShow');
. 로그인 한 사용자 만이 페이지에 액세스 할 수 있으며 자신에게 속한 이메일 만 볼 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다