【发布时间】:2017-07-18 14:34:19
【问题描述】:
到目前为止,我使用的是 eloquent 的 ->exist() 和普通 php 的 isset()...
现在我正在使用它们...,当一个不工作时,我会切换到另一个,然后它会工作。
但这会使代码看起来很脏.. 你有什么建议什么时候使用它们,有什么区别..在laravel中处理空雄辩查询的最佳实践是什么..谢谢
【问题讨论】:
到目前为止,我使用的是 eloquent 的 ->exist() 和普通 php 的 isset()...
现在我正在使用它们...,当一个不工作时,我会切换到另一个,然后它会工作。
但这会使代码看起来很脏.. 你有什么建议什么时候使用它们,有什么区别..在laravel中处理空雄辩查询的最佳实践是什么..谢谢
【问题讨论】:
我们可以为此使用empty() 方法。
// After you initiate your model in variable
$var = Model::find($id);
// Just check it use empty method
if(empty($var)) {
// Do something here
}
编辑:
最佳实践中使用原生 exists() 和 isset() 的说明。
我们知道isset方法通常用于检查变量是否定义。
$col = "column"
if(isset($col)) {
// true
}
if(isset($cols)) {
// else
}
对于exists()的用法,通常是用来验证的。你可以在 laravel 文档中查看。
$name = $request->get('name');
if(User::where('name', $name)->exists()){
// It will true if the in users table exists the $name in name columns
// And do something if true :D
} else {
// If not exists/false you can return error like this
return response()->json([
'error'=>true
],400);
}
【讨论】:
if ($var->count()){/*do something*/},就好像模型返回任何计数将是 1,因此 eval 为 true。
empty 或者使用 isset :D