Laravel Vuejs 实战:开发知乎 (34-35)私信列表

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 
InboxController.php

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 
index.blade.php

/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 
show.blade.php

fromUser属性是 Message.php模型文件中定义的模型关联

批注 2020-03-04 003714

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 

猜你喜欢

转载自www.cnblogs.com/dzkjz/p/12405922.html
今日推荐