与基于 Laravel 8 的约会应用程序相关的问题。用户喜欢和收藏夹功能问题

发布时间:2021-02-25 08:14

我为 Laravel 8 约会应用程序的喜欢和收藏功能编码。成员可以看到匹配的合作伙伴,我从下面的查询中过滤了它们。
$match = DB::table('matchcriterias')
                                        ->where('user_id', '!=', Auth::user()->id)
                                        ->whereBetween(DB::raw('TIMESTAMPDIFF(YEAR,matchcriterias.dob,CURDATE())'),array($partner_match->age_from, $partner_match->age_to))
                                        ->whereBetween(DB::raw('matchcriterias.height'),array($partner_match->height_from, $partner_match->height_to))
                                        ->where('gender', '!=', function($query){ 
                                                                                    $query->select('gender')
                                                                                            ->from('profiles')
                                                                                            ->where('user_id', Auth::user()->id);
                                                                                })
                                        ->where('marital_status', $partner_match->maritals)
                                        ->get();

然后在 foreach 之后 $match 查询并将特定值存储到 $data 数组中。

$like = [];
$not_like = [];
foreach($match as $match_record){

 if(Like::where('user_id', Auth::user()->id)->exists()){

            $liked = Like::where('user_id', Auth::user()->id)->get();

            foreach($liked as $record){
                //like_to is the ID of the user that the current user liked to ( filled heart)
                if($match_record->user_id == $record->like_to){
                    $like[] = $match_record->user_id;
                }
                //add other matching users ID into $not_like array ( unfilled heart )
                if($match_record->user_id != $record->like_to){
                    $not_like[] = $match_record->user_id;
                }
            }
  }

     $data[] = [
                    'name' => User::where('id', $match_record->user_id)->value('name'),
                    'age'  => floor((time() - strtotime($match_record->dob)) / 31556926),
                    'like' => $like,
                    'not_like' => $not_like
                 ];
}
return view('user.partnermatching', ['data' => $data]);

在blade模板中,foreach“data”数组如下

    @foreach ($data as $field)
      <span class="label label-primary">{{$field['name']}} </span>&nbsp;
      <span class="label label-success">Age: {{$field['age']}}</span>

  
    //display the filled heart
    @foreach ($field['like'] as $val)
       @if ($val == $field['user_id'])
         <i class="fas fa-heart" style='font-size:30px; color:palevioletred' id="like" ></i>
       @endif
    @endforeach
   //display the unfilled heart
   @foreach ($field['not_like'] as $val)
    @if ($val == $field['user_id'])
    <i class="far fa-heart" style='font-size:30px; color:palevioletred' id="like" 
                   onclick="onLike({{$field['user_id']}})"></i>
   @endif
   @endforeach

    @endforeach

问题:
当我喜欢一个用户(点击心形图标)时,其他匹配的用户也会得到同样的未填充的心。如果您需要进一步说明,请在下方评论。我尽力解释了。

谢谢。

enter image description here

回答1