4

如何检查 Auth:user() 是否是当前 $user 的朋友?

这将放置在个人资料中,以显示添加朋友按钮或待处理请求等?我已经尝试过与其他方法和 where 子句的关系,但仍然没有成功。

请帮忙,非常感谢!!

要在这里恢复,我需要这样的东西:

我需要类似的东西:

where user1_id = $user->id AND user2_id = Auth::user() AND is_friend = 1 
OR 
where user1_id = Auth::user() AND user2_id = $user->id AND is_friend = 1

这一切,通过 laravel 雄辩?

我已经按照本教程(使用 Laravel 的友谊系统:多对多关系)了解如何建立双向关系,我有以下内容:

数据库表

-users table-
id
username
age

-friends table-
id ->increments
user1_id ->reference->users.id
user2_id ->reference->users.id
is_accepted - return bool true or false, 1 or 0

用户控制器.php

<?php

namespace App\Http\Controllers;
use Illuminate\Support\Facades\Auth;
use App\User;
use App\Friend;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function getIndex($user)
    {

        $relation = User::with('friendsOfMine', 'friendOf', 'profileComments')
            ->where('username', $user);

        $user = User::findOrNew($user)
            ->where('username', $user)
            ->first();

        return view('users.profile')
            ->with('amigos', $relation)
            ->with('user', $user);
    }

模型用户.php

//friendship i've started
function friendsOfMine()
{
return $this->belongsToMany('App\User', 'friends', 'user1_id', 'user2_id')
    ->wherePivot('is_friend', '=', 1) // to filter only accepted
    ->withPivot('is_friend'); // or to fetch accepted value
}

// friendship that I was invited to
function friendOf()
{
    return $this->belongsToMany('App\User', 'friends', 'user2_id', 'user1_id')
    ->wherePivot('is_friend', '=', 1)
    ->withPivot('is_friend');
}

// accessor allowing you call $user->friends
    public function getFriendsAttribute()
{
    if ( ! array_key_exists('friends', $this->relations)) $this->loadFriends();

    return $this->getRelation('friends');
}

protected function loadFriends()
{
    if ( ! array_key_exists('friends', $this->relations))
    {
        $friends = $this->mergeFriends();

        $this->setRelation('friends', $friends);
    }
}

protected function mergeFriends()
{
    return $this->friendsOfMine->merge($this->friendOf);
}

Friend.php 模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Friend extends Model
{
    protected $table = 'friends';
}

我试过了

$friendsAll = Friends::with('User')
            ->where('user1_id', $user)
            ->orWhere('user2_id', $user)
            ->first();
4

1 回答 1

-1

尝试这个:

$User = Auth::user();
$RequestedUser = User::find(Request::input('user_id'));

$Friendship = Friend::with('User')
              ->whereIn('user1_id', [$User->id, $RequestedUser->id])
              ->whereIn('user2_id', [$User->id, $RequestedUser->id])
              ->where('is_friend', '=', 1)
              ->first();
于 2015-07-20T00:06:17.967 回答