检查laravel中的朋友
Posted
技术标签:
【中文标题】检查laravel中的朋友【英文标题】:Check if friends in laravel 【发布时间】:2015-10-08 20:33:19 【问题描述】:如何检查 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 雄辩?
我已经按照这个教程 (Friendship system with Laravel : Many to Many relationship) 关于如何建立双向关系,我有以下几点:
数据库表
-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();
【问题讨论】:
【参考方案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();
【讨论】:
编辑:使用 ::input 给了我一些错误,不得不使用 find(5) 作为用户示例 id 5 似乎它没有用,或者我不清楚我的要求,或者我不知道如何使用它,无论如何,我已经将它放在我的控制器上进行测试,但是没有奏效,请您指导我吗?也谢谢您的时间!请记住,这是一种双向的友谊。谢谢你 你能在 UserController 中提供完整的操作代码吗?以上是关于检查laravel中的朋友的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 5.6 中检查 @if 语句中的当前 URL