我目前正在列出各种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)
我觉得好像错过了一些非常明显的东西,或者忽视了这种关系。
如果我错过了什么,请告诉我。
答案 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你会知道用户是否喜欢自由泳。