我有一个用户表,用户可以在发送好友请求后互相添加为朋友我已经有了这样一个图标,表明该请求正在等待,
现在我试着这样做,以便在接受请求后用户不再出现在users-table中,我的代码在发件人方面工作,在接受请求后,用户不再出现在表中,但在接收方,添加的用户仍然显示为可添加(也在两个用户友元列表中)
(视图)
@extends('layouts.app')
@section('content')
<div id="mySidenav" class="sidenav">
<a href="javascript:void(0)" class="closebtn"
onclick="closeNav()">×</a>
<input placeholder="zoeken.."></input>
</div>
<div id="main">
<span onclick="openNav()" ondblclick="closeNav()" style="float:left;z-
index:2;position:relative;top:10px;right:-5px;">
<img src="images/icons/Zoekn.png" width="40" style="cursor:pointer;font-
size:12pt;">
</span>
<h1 class="gardenHeader"><b style="position:relative;left:0px;">De
Name of table</b>
</h1>
<div class="gardenTable">
@if($users)
@foreach($users as $user)
@if($user->gender == 'man')
<?php
if(!$check) { ?>
<div class="gardenElementMale"><a style="text-decoration: none;"
href="/profile/{{$user->id}}"><img src="/uploads/avatars/{{ $user->avatar
}}" alt="User Image" class="gardenImage"></a>
<a href=""><span title="Stuur een vlindr" class="send-vlindr"></span>
</a>
<a href=""><span title="Ik vind je leuk" class="send-heart"></span></a>
<a href="{{url('../')}}/addFriend/{{$user->id}}"><span
title="Vriendschapsverzoek" class="add-friend "></span></a>
<a href="/profile/{{$user->id}}" style="text-decoration:none;"><h4
class="gardenName">{{$user->User}} ♂</h4></a></div>
<?php } elseif($status) { ?>
<div class="gardenElementMale"><a style="text-decoration: none;"
href="/profile/{{$user->id}}"><img src="/uploads/avatars/{{ $user->avatar
}}" alt="User Image" class="gardenImage"></a>
<a href=""><span title="Stuur een vlindr" class="send-vlindr"></span>
</a>
<a href=""><span title="Ik vind je leuk" class="send-heart"></span></a>
<a href="/profile/{{$user->id}}"><span title="Vriendschapsverzoek is
verstuurd" class="pending"></span></a>
<a href="/profile/{{$user->id}}" style="text-decoration:none;"><h4
class="gardenName">{{$user->User}} ♂</h4></a></div>
<?php } else { ?>
<?php } ?>
@else
<?php
$check = DB::table('friendships')
->where('recipient_id', '=', $user->id)
->where('sender_id', '=', Auth::user()->id)
->first();
$status = DB::table('friendships')
->where('recipient_id', '=', $user->id)
->where('sender_id', '=', Auth::user()->id)
->where('status', '=', '0')
->first();
if(!$check) { ?>
<div class="gardenElementFemale"><a style="text-decoration: none;"
href="/profile/{{$user->id}}"><img src="/uploads/avatars/{{ $user-
>avatar }}" alt="User Image" class="gardenImage"></a>
<a href=""><span title="Stuur een vlindr" class="send-vlindr"></span>
</a>
<a href=""><span title="Ik vind je leuk" class="send-heart"></span></a>
<a href="{{url('../')}}/addFriend/{{$user->id}}"><span
title="Vriendschapsverzoek" class="add-friend "></span></a>
<a href="/profile/{{$user->id}}" style="text-decoration:none;"><h4
class="gardenName">{{$user->User}} ♂</h4></a></div>
<?php } elseif($status) { ?>
<div class="gardenElementFemale"><a style="text-decoration: none;"
href="/profile/{{$user->id}}"><img src="/uploads/avatars/{{ $user-
>avatar }}" alt="User Image" class="gardenImage"></a>
<a href=""><span title="Stuur een vlindr" class="send-vlindr"></span>
</a>
<a href=""><span title="Ik vind je leuk" class="send-heart"></span></a>
<a href="/profile/{{$user->id}}"><span title="Vriendschapsverzoek is
verstuurd" class="pending"></span></a>
<a href="/profile/{{$user->id}}" style="text-decoration:none;"><h4
class="gardenName">{{$user->User}} ♂</h4></a></div>
<?php } else { ?>
<?php } ?>
@endif
@endforeach
@endif
</div>
<span style="">{{$users->links()}}</span>
</div>
@endsection
(我的控制员)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Auth;
use App\Profile;
use Illuminate\Support\Facades\Event;
use App\User;
use App\Friendships;
use App\Traits\Friendable;
use DB;
use App\notifications;
class GardenController extends Controller
{
use Friendable;
public function member(){
$users = User::orderBy('id', 'desc')->where('id', '!=', Auth::id())-
>paginate(20);
return view('pages.garden', compact('users'));
}
public function viewProfile($userId = null) {
$user = null;
if($userId != null) {
$user = User::find($userId);
} else {
$user = User::find(Auth::user()->id);
}
return view('/profile', [
'user' => $user
]);
}
public function sendRequest($id) {
Auth::user()->addFriend($id);
return back();
}
public function requests() {
$uid = Auth::user()->id;
$FriendRequests = DB::table('friendships')
->rightJoin('users', 'users.id', '=',
'friendships.sender_id')
->where('status', '=', '0')
->where('friendships.recipient_id', '=',
$uid)->get();
return view('requests', compact('FriendRequests'));
}
public function accept($name, $id) {
$uid = Auth::user()->id;
$checkRequest = friendships::where('sender_id', $id)
->where('recipient_id', $uid)
->first();
if ($checkRequest) {
// echo "yes, update here";
$updateFriendship = DB::table('friendships')
->where('recipient_id', $uid)
->where('sender_id', $id)
->update(['status' => 1]);
$notifications = new notifications;
$notifications->note = 'Vriendschapsverzoek is geaccepteerd';
$notifications->user_hero = $id; // who is accepting my request
$notifications->user_logged = Auth::user()->id; // me
$notifications->status = '1'; // unread notifications
$notifications->save();
if ($notifications) {
return back()->with('msg', 'U bent nu bevriend met ' . $name);
}
} else {
return back()->with('msg', 'U bent nu bevriend met dit lid');
}
}
public function friends() {
$uid = Auth::user()->id;
$friends1 = DB::table('friendships')
->leftJoin('users', 'users.id',
'friendships.recipient_id') // who is not loggedin but send request to
->where('status', 1)
->where('sender_id', $uid) //
who is logged in
->get();
//dd($friends1);
$friends2 = DB::table('friendships')
->leftJoin('users', 'users.id',
'friendships.sender_id')
->where('status', 1)
->where('recipient_id', $uid)
->get();
$friends = array_merge($friends1-
>toArray(), $friends2->toArray());
return view('/friends',
compact('friends'));
}
public function requestRemove($id) {
DB::table('friendships')
->where('recipient_id', Auth::user()->id)
->where('sender_id', $id)
->delete();
return back()->with('msg', 'Vriendschapsverzoek is
verwijderd.');
}
public function notifications($id) {
$uid = Auth::user()->id;
$notes = DB::table('notifications')
->leftJoin('users', 'users.id',
'notifications.user_logged')
->where('notifications.id', $id)
->where('user_hero', $uid)
->orderBy('notifications.created_at',
'desc')
->get();
$updateNoti = DB::table('notifications')
->where('notifications.id', $id)
->update(['status' => 0]);
return view('notifications', compact('notes'));
}
}
(特质模型 - )
<?php
namespace App\Traits;
use App\Friendships;
trait Friendable {
public function addFriend($id){
$Friendship = friendships::create([
'sender_id' => $this->id, // who is logged in
'recipient_id' => $id,
]);
if($Friendship)
{
return $Friendship;
}
return 'failed';
}
}
(模型)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Friendships extends Model
{
protected $fillable = ['sender_id', 'sender_type', 'recipient_id',
'recipient_type', 'status',];
}
(用户模型)
namespace App;
use App\Traits\Friendable;
use Illuminate\Notifications\Notifiable;
use App\Friendships;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
use Friendable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'dob', 'gender', 'email', 'woonplaats', 'User', 'avatar',
'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function posts(){
return $this->hasMany('App\Post');
}
public function friends()
{
return $this->hasMany('App\Friendships');
}
}
答案 0 :(得分:0)
您可以更新控制器中的查询,以使用{{3}}功能排除朋友。
"TypeError: Cannot read property '0' of undefined"