Php 用户相互友好关系检查laravel
我在LaravelV4.2项目中工作,现在我不明白如何解决这个问题。 我有一个用户数组和登录用户id现在我想检查登录用户是否跟随数组中的任何用户,或者数组中的任何单个用户是否跟随登录用户。其中一个then在后面,两个数组都在后面,然后返回true。但我想通过拉威尔的关系来解决这个问题。 下面是我编写的代码Php 用户相互友好关系检查laravel,php,laravel,Php,Laravel,我在LaravelV4.2项目中工作,现在我不明白如何解决这个问题。 我有一个用户数组和登录用户id现在我想检查登录用户是否跟随数组中的任何用户,或者数组中的任何单个用户是否跟随登录用户。其中一个then在后面,两个数组都在后面,然后返回true。但我想通过拉威尔的关系来解决这个问题。 下面是我编写的代码 $login_id = 2; $users_arr = Array ( [0] => 87 [1] => 9595 [2] => 8625
$login_id = 2;
$users_arr = Array
(
[0] => 87
[1] => 9595
[2] => 8625
[3] => 18368
[4] => 18363
[5] => 18371
)
class User extends Eloquent {
protected $table = 'users';
protected $primaryKey = 'id';
protected $guarded = array();
protected $hidden = array();
public function mutual_friends() {
return $this->belongsToMany('User', 'friends', 'follower_id', 'following_id');
}
public static function get_users_infomation_by_ids($login_id, $users_arr = array()) {
$users = User::where(function($sql) use($login_id, $users_arr) {
$sql->whereIn('id', $users_arr);
})->with(['mutual_friends'=>function($sql) use($login_id){
$sql->where('follower_id','=',$login_id);
$sql->orWhere('following_id','=',$login_id);
}])->get(array('id', 'username', 'full_name', 'is_live', 'message_privacy', 'picture'));
return (!empty($users) && count($users) > 0) ? $users->toArray() : array();
}
}
<pre>Array
(
[0] => Array
(
[id] => 87
[username] => rizwan.saleem
[full_name] => Rizwan Saleem
[is_live] => 0
[message_privacy] => 0
[picture] => vmiboiagcropped-5589294861513766548.jpg
[mutual_friends] => Array
(
[0] => Array
(
[id] => 2
[username] => yahoo
[pivot] => Array
(
[following_id] => 87
[follower_id] => 2
)
)
)
)
[1] => Array
(
[id] => 8625
[username] => hassan_shahid
[full_name] => Hassan Shahids
[is_live] => 0
[message_privacy] => 0
[picture] => profile_default.jpg
[mutual_friends] => Array
(
[0] => Array
(
[id] => 2
[username] => yahoo
[pivot] => Array
(
[following_id] => 8625
[follower_id] => 2
)
)
)
)
[2] => Array
(
[id] => 9595
[username] => majo
[full_name] => Majo mike
[is_live] => 1
[message_privacy] => 0
[picture] => rwls1p2jcropped507977901504873847.jpg
[mutual_friends] => Array
(
[0] => Array
(
[id] => 2
[username] => yahoo
[pivot] => Array
(
[following_id] => 9595
[follower_id] => 2
)
)
)
)
[3] => Array
(
[id] => 18363
[username] => asif_ilsa
[full_name] => Asif Ilsa
[is_live] => 1
[message_privacy] => 0
[picture] => ydi1dmtdupload-image1512648978.jpg
[mutual_friends] => Array
(
)
)
[4] => Array
(
[id] => 18368
[username] => ali.abbas
[full_name] => Ali Abbas 1
[is_live] => 1
[message_privacy] => 0
[picture] => dsczoljfcropped4868760551505544665.jpg
[mutual_friends] => Array
(
[0] => Array
(
[id] => 2
[username] => yahoo
[pivot] => Array
(
[following_id] => 18368
[follower_id] => 2
)
)
)
)
[5] => Array
(
[id] => 18371
[username] => maju
[full_name] => Mani Dude
[is_live] => 0
[message_privacy] => 2
[picture] => ndtcihu7upload-image1503915762.jpg
[mutual_friends] => Array
(
[0] => Array
(
[id] => 2
[username] => yahoo
[pivot] => Array
(
[following_id] => 18371
[follower_id] => 2
)
)
)
)
)
friends表包含以下列{id,follower\u id,follower\u id}
现在我希望任何一个条件都为true,然后函数返回true和用户信息
输出
在上面的outpu id->18363中没有相互记录,这只是因为
用户不跟随登录用户,甚至登录用户也不跟随该用户。问题是什么???@Sohel0415问题是,假设2个用户跟随4,4也跟随2,还有另一个用户5跟随2,但2不跟随5,所以当我获取4和5的用户信息时,我还需要与用户2的好友关系信息登录用户=2Array4,5它返回这些用户的好友信息,这些用户相互跟踪或只有登录用户表示2个用户跟踪,但如果另一个用户跟踪登录用户但登录用户未跟踪,则返回empty@RizwanSaleem在$users\u arr中包含您想要获取的所有ID,可能是您缺少一些ID hereLogin User=2数组[0] => 19071 [1] => 87 [2] => 9595 [3] => 8625 [4] => 18368 [5] => 18363 [6]=>18371在数组中用户每个用户都有朋友信息,但只有18363个用户没有朋友信息,因为loign user没有跟随此用户,但此用户跟随登录用户。那么您现在得到的是什么,您的期望是什么?我的期望是,如果两个用户都在跟随,或者如果其中任何一个都在跟随,则返回朋友信息他们跟随对方,但我得到的是,如果两者都跟随对方或只有登录用户跟随其他用户,然后我收到朋友的信息
$users = User::whereIn('id', $users_arr)
->with('mutual_friends')
->where(function ($query) use ($login_id){
$query->whereRaw('users.id=friends.follower_id OR users.id=friends.following_id')->where(function($q) use ($login_id){
$q->where('follower_id',$login_id);
});
})
->get(array('id', 'username', 'full_name', 'is_live', 'message_privacy', 'picture'));