跟随/取消跟随系统的结构

时间:2019-07-05 11:03:07

标签: laravel social

我使用laravel构建了一个类似于instagram的应用,它具有instagram这样的关注/取消关注系统。我想在访问个人资料时隐藏我的关注按钮,因为我们无法在真实的instagram应用程序中关注自己。

我试图获取配置文件和用户表的ID并设置一个条件:如果它们相等,则按钮会隐藏。

这些是模型:

用户模型

    public function posts(){
        return $this->hasMany(Post::class)->orderBy('created_at' , 'DESC');    
    }

    public function following(){
        return $this->belongsToMany(Profile::class);
    }

    public function profile(){
        return $this->hasOne(Profile::class);
    }

个人资料模型

class Profile extends Model
{
    public function followers() {
        return $this->belongsToMany(User::class);
    }

    public function user() {
        return $this->belongsTo(User::class);
    }
}

FollowsController

class FollowsController extends Controller
{
    public function __construct(){
        $this->middleware('auth');
    }

    public function store(User $user){
        return auth()->user()->following()->toggle($user->profile);
    }
}

ProfileController:在这里,我想从模型中获取配置文件ID和用户ID,并通过紧凑型将其发送给视图,在我想匹配此值并检查它们是否相等或不是,但配置文件ID死亡并转储时返回“ null”。

    public function index(User $user , Profile $profile)
    {
        $follows = (auth()->user()) ? auth()->user()->following->contains($user- >id) : false ;
        return view('profiles.index' , compact('user' ,'follows', 'profileId' , 
    'userId'));
    }

这是显示个人资料的索引视图中的vue标记,我只想在其中添加v-if条件并阻止当前用户跟随自己

     <follow-button my-user-id="{{ $user->id }}"  follows="{{ $follows }}" > 
    </follow-button>

我只想禁止用户跟踪自己,方法是在显示个人资料页面时隐藏其个人资料的关注按钮。请帮助

1 个答案:

答案 0 :(得分:0)

以下代码的问题在于,您永远不会定义$profileId$userId,因此它们将以null的形式发送到视图。

public function index(User $user , Profile $profile)
{
    $follows = (auth()->user()) ? auth()->user()->following->contains($user->id) : false;

    return view('profiles.index', compact('user', 'follows', 'profileId', 'userId'));
}

我认为您可能可以执行以下操作:

public function index(User $user)
{
    $follows = auth()->user() ? auth()->user()->following->contains($user->id) : false;

    return view('profiles.index', compact('user', 'follows'));
}

在您看来:

@if(auth()->check() && auth()->user()->id !== $user->id)
    <follow-button my-user-id="{{ $user->id }}"  follows="{{ $follows }}"></follow-button>
@endif

上面的代码检查是否: -用户已登录(如果您未登录,那么我也不能跟随某人) -当前通过身份验证的用户ID与$user(正在访问的配置文件)ID不同,如果通过身份验证的用户查看自己的配置文件,该ID将立即显示按钮。