1.控制器:
1 php artisan make:controller InboxController
文件代码如下:
1 <?php 2 3 namespace App\Http\Controllers; 4 5 use Illuminate\Http\Request; 6 7 8 class InboxController extends Controller 9 { 10 public function __construct() 11 { 12 $this->middleware('auth'); 13 } 14 15 // 16 public function index() 17 { 18 $messages = auth()->user()->messages->groupBy('from_user_id'); 19 // $messages->map(function ($message) { 20 // return $message->map(function ($item) { 21 //// return $item->with('user'); 22 // return $item->fromUser; 23 // }); 24 // }); 25 return view('inbox.index', compact('messages')); 26 } 27 28 public function show($userId) 29 { 30 $messages = auth()->user()->messages->where('from_user_id', $userId); 31 32 return view('inbox.show', compact('messages')); 33 } 34 } 35 36
from_user_id是 在messages表中的字段
view文件:
/inbox/index.blade.php:
1 @extends('layouts.app') 2 @section('content') 3 <div class="container"> 4 <div class="row"> 5 <div class="card"> 6 <div class="card-header"> 7 你有新的消息! 8 </div> 9 <div class="card-body"> 10 11 @forelse($messages as $messageGroup) 12 <div class="card"> 13 <div class="card-header"> 14 <a href="#"> 15 <img src="{{ $messageGroup->first()->fromUser->avatar }}" 16 alt="{{ $messageGroup->first()->fromUser->name }}" 17 class="img-thumbnail img-fluid card-img" style="height: 30px;width: 30px"> 18 {{ $messageGroup->first()->fromUser->name }} 19 </a> 20 </div> 21 <div class="card-body"> 22 <p class="text-success "> 查看详细对话请点击:</p> 23 <a href=" {{ route('inbox.show', $messageGroup->first()->fromUser->id) }}" 24 class="btn btn-block bg-light"> {{ $messageGroup->first()->content }}</a> 25 </div> 26 </div> 27 @empty 28 @endforelse 29 </div> 30 </div> 31 </div> 32 </div> 33 @endsection 34 35
/inbox/show.blade.php:
1 @extends('layouts.app') 2 @section('content') 3 <div class="container"> 4 <div class="row"> 5 <div class="card"> 6 <div class="card-header"> 7 <a href="#"> 8 <img src="{{ $messages->first()->fromUser->avatar }}" 9 alt="{{ $messages->first()->fromUser->name }}" 10 class="img-thumbnail img-fluid card-img" style="height: 30px;width: 30px"> 11 {{ $messages->first()->fromUser->name }} 12 </a> 13 </div> 14 <div class="card-body"> 15 @forelse($messages as $message) 16 <div class="card mt-2"> 17 <div class="card-body bg-light"> 18 {{$message->content}} 19 </div> 20 </div> 21 @empty 22 @endforelse 23 </div> 24 </div> 25 </div> 26 </div> 27 @endsection 28 29
fromUser属性是 Message.php模型文件中定义的模型关联
route路由 web.php添加:
1 #region 2 //用户查看短消息 3 Route::get('/inbox', 'InboxController@index')->name('inbox.index'); 4 5 //展示用户间私信对话具体内容页 6 Route::get('/inbox/{userId}', 'InboxController@show')->name('inbox.show'); 7 8 #endregion 9 10