Laravel, Eloquent, 当我只需要一个值时的数组
Laravel, Eloquent, array when I need just a value
这可能是一件简单的事情,但如果不做更复杂的 if/else 我认为不需要的声明就无法弄清楚。
我需要检索具有指定 ID 号的用户名。但有可能,具有给定 ID 的用户不存在。
使用这样的代码:
$author = User::select('name')->where('id', $givenId)->firstOr( function () { return 'Gone'; });
它几乎可以正常工作,但如果用户存在,我将得到一个数组 {"name":"User"} 作为结果。不能只写 ->value('name')
最后因为当用户不存在时它给我一个错误,我 运行 方法值在一个空对象上。
三元运算符非常适合变量的 if else 简短解决方案,并且使用可选的助手将避免未设置的问题
$author = optional(User::select('name')
->where('id', $givenId)
->firstOrFail())->name ?? 'Gone';
否则只使用可选的效果很好。例如
$author = optional(User::select('name')
->where('id', $givenId)
->firstOrFail())->name
然后在模板中
@if ($auther)
{{ $author }}
@endif
您可以直接在构建器上调用 value
来 return 单个列的值:
User::where('id', $givenId)->value('name') ?? 'Gone';
这是假设用户的名字不是 null
(或 null
等同物)。
这可能是一件简单的事情,但如果不做更复杂的 if/else 我认为不需要的声明就无法弄清楚。
我需要检索具有指定 ID 号的用户名。但有可能,具有给定 ID 的用户不存在。
使用这样的代码:
$author = User::select('name')->where('id', $givenId)->firstOr( function () { return 'Gone'; });
它几乎可以正常工作,但如果用户存在,我将得到一个数组 {"name":"User"} 作为结果。不能只写 ->value('name')
最后因为当用户不存在时它给我一个错误,我 运行 方法值在一个空对象上。
三元运算符非常适合变量的 if else 简短解决方案,并且使用可选的助手将避免未设置的问题
$author = optional(User::select('name')
->where('id', $givenId)
->firstOrFail())->name ?? 'Gone';
否则只使用可选的效果很好。例如
$author = optional(User::select('name')
->where('id', $givenId)
->firstOrFail())->name
然后在模板中
@if ($auther)
{{ $author }}
@endif
您可以直接在构建器上调用 value
来 return 单个列的值:
User::where('id', $givenId)->value('name') ?? 'Gone';
这是假设用户的名字不是 null
(或 null
等同物)。