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 等同物)。