我正在使用Laravel 4.说我有一个雄辩的模型(患者),我想找一个名叫Bob的病人,我会这样做:
$patient = Patient::where('name', '=', 'Bob');
Run Code Online (Sandbox Code Playgroud)
检查$ patient是否为有效记录的最佳方法是什么?
Jak*_*son 24
如果数据库查询未找到任何匹配结果,则返回null
.因此...
$patient = Patient::where('name','=','Bob')->first();
if ( is_null($patient) ) {
App::abort(404);
}
Run Code Online (Sandbox Code Playgroud)
(注意:在您的原始问题中,您在查询中忘记了->first()
(或->get()
).不要忘记,否则您将得到一个Eloquent对象而不是结果.)
Jar*_*zyk 10
用这个:
$patient = Patient::where('name', '=', 'Bob')->firstOrFail();
Run Code Online (Sandbox Code Playgroud)
它会在成功时返回Eulqouent模型,或者在失败时抛出ModelNotFoundException.
$patient = Patient::where('name','Bob')->get();
if ( $patient->isEmpty() ) {
return response(['error' => 'Record not found'], 404);
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我知道这已经过时了,但是随着第二次谷歌搜索,这就出现了...对于你不期望一条记录或不能使用的情况->firstOrFail()
(我的用例是一个async typeahead api,最多返回10个结果),对我来说唯一有用的是count():
$patient = Patient::where('name', '=', 'Bob')->get(); //you could have more than one bob
if (!count($patient)) {
return 'No records found';
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21882 次 |
最近记录: |