2015-11-05 1 views
0

Это должно быть просто, но по какой-то причине я не могу получить ожидаемый ответ. У меня есть модель (App\Product), которая имеет много разрешений (App\ProductPermission), и моя цель - проверить, содержит ли продукт определенное разрешение, описанное в текстовой строке. Я могу получить доступ к этим штрафам, например ..Поиск коллекции взаимосвязи для значения атрибута в Eloquent Laravel5

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

Это даст мне коллекцию объектов ProductPermission, как ожидалось. Одним из атрибутов модели ProductPermission является «разрешение», которое является текстовой строкой. Например, «пользователи *».

Я хочу, чтобы иметь возможность сделать что-то подобное этому

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

Но это возвращает ложь, несмотря на объект ProductPermission с атрибутом permission=users* существующего. Как я могу искать атрибуты (или определенный атрибут) всех объектов в коллекции отношений?

Заранее спасибо ..

ответ

1

Это работает ...

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

Но это не так хороша,

0

Вы можете использовать whereHas нравится следующим образом:

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

Спасибо за но я не уверен, как это добавляет что-либо ... кроме некоторой сложности –

Смежные вопросы