【问题标题】:Laravel - Way to use `->map()` in conjunction with `->firstOrFail()`?Laravel - 将`->map()`与`->firstOrFail()`结合使用的方法?
【发布时间】:2019-02-19 12:54:54
【问题描述】:

我正在使用->map() 函数,如this SO question 中所示,但现在我需要更新使用->firstOrFail() 而不是->get() 的范围。或者,如果您不能将 ->map()->firstOrFail() 一起使用,我如何在使用范围获取单个记录时即时编辑某些值?

【问题讨论】:

    标签: php laravel laravel-5 eloquent


    【解决方案1】:

    firstOrFail 将返回一个结果 - 而不是一个集合。您不能 map 处理单个项目 - 但如果您想在回调中对返回的结果做一些事情,您可以使用 tap 函数来包装它。

    tap(User::where('id', 1337)->firstOrFail(), function ($user) {
      //
    });
    

    【讨论】:

    • 更新:我无法在返回的模型上使用 ->trashed() 方法。知道为什么不?
    • @Dwight 当我尝试在 tap() 闭包中分配一个值时,唯一返回的是我设置的属性,而模型的其余部分似乎已经在 J​​SON 中消失了。
    • 我的错,我的原始代码意外地受到了 Ruby 的启发。如果你确实想要一个回调来对模型做一些事情,你需要用tap 函数包装它,然后传递一个回调作为第二个参数。老实说,您最好将模型分配给一个变量并以这种方式使用它。
    • firstOrFail() 结果分配给一个变量并修改该变量的属性对我有用。感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2015-01-23
    • 2018-04-25
    • 1970-01-01
    相关资源
    最近更新 更多