【问题标题】:Laravel 5.5 - findorFail and check for another valueLaravel 5.5 - findorFail 并检查另一个值
【发布时间】:2018-07-26 20:35:25
【问题描述】:

我正在像这样在 Laravel 5.5 中使用 try...

try {
        $fruit = Fruit::findOrFail($id);
    }

但我想检查它不仅找到了具有提供的 ID 的 Fruit,而且它的 fruit_color 为“red”

我是否需要使用 'with' 语句来做到这一点?

我知道我可以在之后运行另一次检查,但想知道我是否可以在一个语句中完成所有这些?

【问题讨论】:

标签: laravel


【解决方案1】:

试试这个代码

$fruit = Fruit::where(‘id’, $id)->where(‘color’, ‘red’)->first();

【讨论】:

    【解决方案2】:

    您只需要在调用 find 之前添加额外的条件:

    try {
        $fruit = Fruit::where('fruit_color', 'red')->findOrFail($id);
    }
    

    【讨论】:

    • 一个 try 语句应该捕获.. 但是,除了 try 之外,当您需要通过特定的 where 条件和如果没有匹配项,则一次性抛出 404。
    【解决方案3】:

    一些事情。首先,在这里抛出异常是处理“if”情况的错误方法。如果您计划在不返回值的情况下,那么这不是对异常的正确使用。回答你的问题:

    $fruit = Fruit::where(‘id’, $id)->where(‘color’, ‘red’)->get();
    

    这会返回满足您条件的集合项目。接下来要测试集合是否为空(没有水果),您可以执行以下操作:

    if($fruit->isEmpty()) {
        //handle empty collection
    }
    

    希望这会有所帮助!用于集合的 Laravel 文档非常棒。我建议在那里进一步阅读。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      相关资源
      最近更新 更多