这是我的代码:
$role_id = Auth::user()->role_id;
$page_id = Page::where('path', $request->path())->where('method', $_SERVER["REQUEST_METHOD"])->first()->id;
所以我同时拥有role_id
和page_id
。我也有这样一张桌子:
// role_pages
+---------+---------+
| role_id | page_id |
+---------+---------+
| 1 | 1 |
| 1 | 2 |
| 1 | 4 |
| 1 | 8 |
| 2 | 1 |
| 2 | 3 |
| 2 | 7 |
| 3 | 1 |
| 3 | 9 |
+---------+---------+
注意role_pages(role_id, page_id)
上有复合唯一索引。正如您所看到的,逻辑是:每个角色都有多个页面。
无论如何,我如何根据我的价值检查上表中是否有任何行?注意到我可以使用EXISTS()
函数在纯SQL中执行此操作。但我想知道如何在laravel中做到这一点?
答案 0 :(得分:2)
如何检查表格中是否有任何行
按照我所描述的contains()
使用here方法。
示例:
$page = Page::where('path', $request->path())->where('method', $_SERVER["REQUEST_METHOD"])->first();
$page->roles()->contains(Auth::user()->role_id);
或者:
$role = auth()->user()->role;
$pageId = Page::where('path', $request->path())->where('method', $_SERVER["REQUEST_METHOD"])->first()->id;
$role->pages()->contains($pageId);