我在组织和评级之间存在多态关系。我的评级表设置如下:
id - integer
user_id - integer
score - integer
ratable_type - text
ratable_id - integer
调用$org->ratings
将检索一个包含与该特定组织相关联的所有评级的数组。但是,我只想查看是否存在具有特定user_id
值的评分。
基本上,我想用user_id = Auth::user()->id
检索评分。这是否可能没有遍历所有评级,以查看何时$org->rating->user_id == Auth::user()->id
?
答案 0 :(得分:1)
如果您不需要加载关系,那么只需查询数据库:
$org->ratings()->where('user_id', Auth::id())->first();
// returns Rating model or NULL
// in previous versions of the framework (if Auth has no id method)
$org->ratings()->where('user_id', Auth::user()->id)->first();
否则过滤集合:
$org->ratings->first(function ($key, $rating) {
return $rating->user_id == Auth::id();
});
// like before: Rating model or NULL