雄辩地检查用户是否喜欢Feed中的项目

时间:2016-03-14 13:05:22

标签: php laravel eloquent

我目前正在列出各种Feed中的项目,此Feed会显示一系列自由式广告'并且计算自由泳的数量,我需要基本上说用户是否喜欢饲料中的自由泳。

我尝试过:

我喜欢模特:

class Likes extends Model {

use SoftDeletes;

protected $table = 'Likes';
protected $fillable = ['id', 'userID', 'freestyleID'];
protected $dates = ['deleted_at'];

public function variantOne()
{
    return $this->beat()->where('TrackVariantID', '1')->first();
}
public function freestyle() {
   return $this->belongsTo(Freestyle::class, 'freestyleID', 'id');
}
public function user() {
    return $this->hasMany(User::class, 'userID', 'id');
}

}

在我的自由泳模型中:

public function likes()
{
    return $this->belongsToMany('App\User', 'Likes', 'freestyleID', 'userID');
}
public function getLike($user) {
    $like = $this->likes()->where('userID', $user)->first();
    var_dump($like);
    return ($like) ? $like : false;
}

我的控制器:

        $freestyleLists =  Freestyle::with('users')
        ->with('beats')
        ->with('likes')
        ->where('active', 1)
        ->orderBy('id', 'desc')
        ->paginate(10);

最后,我在点击getLikes()方法:

<p>{{print_r($freestyleList->getLike($user))}}</p>

收到回复:

NULL 1 (for every freestyle in the feed)

我觉得好像错过了一些非常明显的东西,或者忽视了这种关系。

如果我错过了什么,请告诉我。

1 个答案:

答案 0 :(得分:0)

而不是:

$like = $this->likes()->where('userID', $user)->first();

尝试:

$like = $this->likes->filter(function ($l) use ($user) { return $l->userID == $user->id;});

然后如果计数($ like)&gt; 0你会知道用户是否喜欢自由泳。