2016-07-31 13 views
1

ユーザーが投稿を気に入っていないかどうかを確認してください。問題は、ユーザーの1人が投稿を好きなときに自分のコードで他のユーザーと気に入らないということです。どうしてか分かりません。ユーザーが投稿を好きかどうかを確認するLaravel

コントローラー:

$posts = Post::orderBy('created_at', 'desc')->paginate(10); 
    foreach($posts as $p){ 
     foreach ($p->like as $like){ 
      $like = Like::where('user_id', '=', Auth::user()->id)->get(); 
     } 
    } 

Post.php:

public function user(){ 
    return $this->belongsTo('App\User'); 
} 

public function like() 
{ 
    return $this->hasMany('App\Like'); 
} 

Like.php:

 public function user() 
{ 
    return $this->belongsTo('App\User'); 
} 

    public function post() 
    { 
     return $this->belongsTo('App\Post'); 
    } 

User.php:

public function post(){ 
    return $this->hasMany('App\Post'); 
} 

public function like(){ 
    return $this->hasMany('App\Like'); 
} 

HTML

   @if($like) 
        <i class="fa fa-thumbs-o-up liked pull-right" aria-hidden="true"></i> 
       @else 
        <a href="/like/{{$p->id}}"> 
         <i class="fa fa-thumbs-o-up likeBtn pull-right" aria-hidden="true"></i></a> 
       @endif 
+0

。あなたの$ like変数は上書きされているようです – jonju

+0

"likes"テーブルウィッチは 'user_id '、' post_id 'に属しています。' user_id 'が' post_id 'と同じ行に存在するかどうかをチェックしたいと思います。 – feknuolis

+0

あなたはすでに投稿を好きだった場合、投稿の好き嫌いをしたいと思っています。右? – jonju

答えて

1

コントローラでループしないでください。ビュー(ブレード)でそれを行う

編集コントローラー

$posts = Post::orderBy('created_at', 'desc')->paginate(10); 
$likes = Like::select('post_id')->where('user_id',Auth::user()->id)->get(); 
$likeArr=array_flatten($likes->toArray()); //convert multidimensional array to single array for easy access 
return view('yourview',['posts'=>$posts,'likes'=>$likeArr]); 

実際には、コントローラでコードを達成しようとしているものVIEW

@foreach($posts as $p) 
    @if(in_array($p->id,$likes)) 
     <i class="fa fa-thumbs-o-up liked pull-right" aria-hidden="true"></i> 
    @else 
     <a href="/like/{{$p->id}}"> 
      <i class="fa fa-thumbs-o-up likeBtn pull-right" aria-hidden="true"></i> 
     </a> 
    @endif 
@endforeach 
+0

これは次のようになります: 'Illuminate \ Database \ Grammar :: columnize()に渡される引数1は、型配列、文字列' – feknuolis

+0

でなければなりません。 – jonju

+0

それは表示されません。しかし、それは書いています: '文法 - >列挙( 'post_id')文法.php行121' – feknuolis

関連する問題