我想知道如果first()没有返回任何东西的正确方法是?
现在我用它:
$user = User::where('role_id', $role)->first(['role_id']);
if (is_null($user)) {
//Not found, handle some stuff
} else {
$user->DoSomeUpdatesOnThatUser();
}
这似乎有效。我知道有一个firstOrFail()
但是我在一个作业中使用这个函数所以我不需要返回一个404页面只是处理它不存在
答案 0 :(得分:0)
您可以在这种情况下使用isNotEmpty
方法:
$user = User::where('role_id', $role)->get();// get the collection
if ($user->isNotEmpty()) {// checking if it is empty or not
$user->first()->DoSomeUpdatesOnThatUser();
}
但无论如何,我认为它比你的方式更清洁。
答案 1 :(得分:0)
您提到firstOrFail()
,但这不仅限于显示404页面。它所做的只是抛出一个ModelNotFoundException
,您可以手动捕获它,而不是让它在其他地方处理。
例如:
use Illuminate\Database\Eloquent\ModelNotFoundException;
try {
$user = User::where('role_id', $role)->first(['role_id']);
$user->doTheFunkyStuff();
catch (ModelNotFoundException $e) {
myAmazingFailureFunction();
}
编辑:那就是说,我认为你的方法也没有任何问题。 :)