2015-11-05 73 views
0

这应该很简单,但由于某种原因,我无法获得预期的响应。我有一个模型(App\Product),它拥有许多权限(App\ProductPermission),我的目标是检查产品是否拥有由文本字符串描述的特定权限。我可以访问这些好像..在Eloquent Laravel5中搜索关系集合中的属性值

\App\Product::find($id)->permissions 

这将按预期给我的ProductPermission对象的集合。 ProductPermission模型的其中一个属性是“权限”,即文本字符串。例如“用户*”。

我希望能够做同样的事情到这个

\App\Product::find(3)->permissions->search($permission) //$permission = "users*" 

但是,尽管与现有的属性permission=users*一个ProductPermission对象这个返回false。如何搜索关系集合中所有对象的属性(或特定属性)?

在此先感谢..

回答

1

这工作...

\App\Product::find($id)->permissions->where('permission',$permission)->count(); 

但它不是漂亮

0

您可以使用whereHas喜欢如下:

$productsWithPermissionsCount = Product::whereHas('permissions', function ($query) { 
    $query->where('permission', '=', $permission); 
})->count(); 
+0

感谢输入,但我不知道如何增加任何东西..除了一点复杂 –