【发布时间】:2021-05-25 03:11:56
【问题描述】:
我在成员数据和关注者数据之间加入数据,我想检查关注者数据是否在数据库中,如果不存在则表示他们不是关注者,但我创建的代码导致一个漫长的过程。当我访问 getStatus2 函数时,进程变慢了
怎么做,让我创建的代码可以快速处理数据?
public function ListFollowers($member_id)
{
$get_data=DB::table('member_sso')
->leftJoin('klaklik_member_followers', 'member_sso.member_sso_id', '=', 'klaklik_member_followers.following_id')
// ->leftJoin('klaklik_member_profile', 'klaklik_member_followers.following_id', '=', 'klaklik_member_profile.member_id')
->select('first_name','last_name','following_id','cover','klaklik_member_followers.created_date as following_date')
->where('klaklik_member_followers.member_id',$member_id)
->get();
if (count($get_data)>0) {
foreach($get_data as $key=>$value){
// $peccah=json_decode($value->profile_data);
$array['MEMBER_ID']=$value->following_id;
$array['USERNAME']=$value->first_name." ".$value->last_name;
if (empty($value->cover)) {
$array['MEMBER_IMAGE']='https://www.klaklik.com/assets/images/profile.png';
} else {
$array['MEMBER_IMAGE']="https://cdn-prv-city.klaklik.com/".$value->cover;
}
$array['FOLLOWING_DATE']=$value->following_date;
$status=$this->getStatus2($value->following_id,$member_id);
if (count($status)>0) {
$array['STATUS']='0';
$array['STATUS_DEC']='FOLLOWING YOU';
}else{
$array['STATUS']='1';
$array['STATUS_DEC']='NOT FOLLOW YOU';
}
$result[]=$array;
}
$response=$result;
$data["STATUS"]=200;
$data["MESSAGE"]="FOLLOWING DATA";
$data["DATA"]=$response;
}else{
$data["STATUS"]=404;
$data["MESSAGE"]="YOU HAVE NO FOLLOWERS";
$data["DATA"]=(object) array();
}
return json_encode($data);
}
public function getStatus2($member_id,$following_id){
$get_data=DB::table('klaklik_member_followers')
->where('klaklik_member_followers.member_id',$member_id)
->where('klaklik_member_followers.following_id',$following_id)
->first();
return $get_data;
}
【问题讨论】:
-
为什么不改用Eloquent?
-
我用的是 Eloquent 还是一样,这个过程需要很长时间@rkg
-
使用 Eloquent 就不用循环了。
-
你能给我举个例子吗? @rkg