考虑以下情况:
User::findOrFail([1,2,5,6]);
我们假设数据库中不存在id = 5
和id = 6
的用户。因此,将抛出 ModelNotFoundException异常。
有没有办法知道哪些是缺少的用户? 我想知道数据库中不存在的唯一用户是5和6。
谢谢!
答案 0 :(得分:1)
无法确定使用findOrFail
找不到哪些,因为该方法只是将从数据库返回的项目数与您作为参数传递的ID数量进行比较(它不关心哪些是未找到的ID)。当它抛出异常时,它只传递模型类名称而已:
throw (new ModelNotFoundException)->setModel(get_class($this->model));
如果你愿意,你需要自己实现逻辑。这是一种方法:
$ids = [1, 2, 5, 6];
// Find the users
$users = User::find($ids)->get();
// Find the IDs that did not match
$notFoundIds = array_diff($ids, $users->modelKeys('id'));
if ( ! empty($notFoundIds))
{
// throw your exception here
// the missing IDs are in $notFoundIds
}