Laravel:查找数据透视表记录是否存在
2022-08-30 15:34:17
我有两个模型,它们由数据透视表连接,和.User
Task
我有一个和一个.user_id
task_id
检查用户和任务的这种组合是否存在记录的最简洁方法是什么?
我有两个模型,它们由数据透视表连接,和.User
Task
我有一个和一个.user_id
task_id
检查用户和任务的这种组合是否存在记录的最简洁方法是什么?
根据您的情况,您有几个选择。
如果您已经有一个实例,并且想要查看它是否具有具有特定 ID 的任务,则可以执行以下操作:User
$user = User::find(1);
$hasTask = $user->tasks()->where('id', $taskId)->exists();
如果您有实例并希望检查用户,则可以撤消此操作:Task
$task = Task::find(1);
$hasUser = $task->users()->where('id', $userId)->exists();
如果您只有 ID,而没有每个 ID 的实例,则可以执行以下操作:
$hasPivot = User::where('id', $userId)->whereHas('tasks', function ($q) use ($taskId) {
$q->where('id', $taskId);
})
->exists();
你也可以试试这个,这是在Laravel 5.7中工作的
$user = User::find(1);
$hasTask = $user->tasks->contains($taskId);
但更好的方法是
$hasTask = $user->tasks()->where('tasks.id', $taskId)->exists();