首页 > 其他 > 详细

Laravel 5.8 做个知乎 11 —— 添加关注 toggle方法 的使用

时间:2021-07-16 00:01:26      阅读:17      评论:0      收藏:0      [点我收藏+]

1 创建关注表数据

php artisan make:migration create_user_question_table --create=user_question

\database\migrations\2021_07_15_002200_create_user_question_table.php

技术分享图片
    public function up()
    {
        Schema::create(‘user_question‘, function (Blueprint $table) {
            $table->bigIncrements(‘id‘);
            $table->integer(‘user_id‘)->unsigned()->index();
            $table->integer(‘question_id‘)->unsigned()->index();
            $table->timestamps();
        });
    }
View Code
php artisan migrate

2 model

2.1 Follow

php artisan make:model Follow

\app\Follow.php

技术分享图片
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Follow extends Model
{
    //
    protected $table = ‘user_question‘;
    protected $fillable = [‘user_id‘,‘question_id‘];
}
View Code

2.2 User

\app\User.php

技术分享图片
   /* public function follows($question)
    {
        return Follow::create([
            ‘question_id‘   =>$question,
            ‘user_id‘       =>$this->id
        ]);
    }*/
   public function follows()
   {
       return $this->belongsToMany(Question::class,‘user_question‘)
         ->withTimestamps();
   }
   public function followThis($question)
   {
       return $this->follows()->toggle($question);
   }
    
    public function followed($question)
    {
        return !! $this->follows()->where(‘question_id‘,$question)->count();
    }
View Code

2.3 Question

\app\Question.php

技术分享图片
    public function followers()
    {
        return $this->belongsToMany(User::class,‘user_question‘)
          ->withTimestamps();
    }
View Code

3 控制器

php artisan make:controller QuestionFollowController
技术分享图片
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class QuestionFollowController extends Controller
{
    public function __construct()
    {
        $this->middleware(‘auth‘);
    }
    
    
    //
    public function follow($question)
    {
        Auth::user()->followThis($question);
        return back();
    }
}
View Code

4 路由

\web.php

Route::get(‘questions/{question}/follow‘,‘QuestionFollowController@follow‘);

5 模板

\resources\views\questions\show.blade.php

            <div class="col-md-3">
                <div class="card">
                    <div class="card-header">
                        <h2>{{ $question->followers_count }}</h2>
                        <span>关注者</span>
                    </div>
                    <div class="card-body">

                        <a href="/questions/{{$question->id}}/follow"
                           class="btn  {{Auth::check() &&  Auth::user()->followed($question->id) ? ‘btn-success‘:‘btn-info‘ }}">
                            {{Auth::check() && Auth::user()->followed($question->id) ?‘已关注‘ :‘关注该问题‘     }}

                        </a>
                        <a href="#container" class="btn btn-primary">
                            撰写答案
                        </a>
                    </div>
                </div>
            </div>

 

Laravel 5.8 做个知乎 11 —— 添加关注 toggle方法 的使用

原文:https://www.cnblogs.com/polax/p/15017528.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!