在Eloquent Laravel5中搜索属性值的关系集合

时间:2015-11-05 12:30:28

标签: php laravel-5 eloquent

这应该很简单但由于某种原因我无法获得预期的响应。我有一个具有许多权限(App\Product)的模型(App\ProductPermission),我的目标是检查产品是否包含文本字符串描述的特定权限。我可以访问这些罚款..

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

这将为我提供所需的ProductPermission对象集合。 ProductPermission模型的一个属性是“权限”#39;这是文本字符串。例如"用户*"。

我希望能够做类似的事情

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

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

提前致谢..

2 个答案:

答案 0 :(得分:2)

这有效......

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

但它不那么漂亮

答案 1 :(得分:0)

您可以使用whereHas,如下所示:

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