【问题标题】:Laravel filter nested collectionLaravel 过滤器嵌套集合
【发布时间】:2017-08-03 10:22:29
【问题描述】:

我有一个看起来很简单的问题。

我将快速解释实际问题:

  1. 收音机有很多坐标
  2. 我收藏了一系列收音机
  3. 我想根据条件过滤坐标
  4. 以下代码由于某种原因不起作用。

    $radios = $radios->map(function ($radio, $key) {
    
        $coordinates = $radio->coordinates;
        $coordinates = $coordinates->filter(function($coordinate, $key) {
    
            // return true or false;
        });
    
        $radio['coordinates'] = $coordinates;
    
        return $radio;
    });
    

我可以过滤坐标集合,但不能将过滤后的数组“附加”到无线电对象。
我做错了什么?

【问题讨论】:

    标签: laravel dictionary collections filter


    【解决方案1】:

    编辑:

    尝试将您的功能更改为:

      $radios = $radios->map(function ($radio, $key) {
    
        $coordinates = $radio->coordinates;
        $coordinates = $coordinates->filter(function($coordinate, $key) {
    
            // return true or false;
        });
    
            $radio[$key] = $coordinates;
    
            return $radio;
        });
    

    【讨论】:

    • 我不确定我是否遵循。请您详细说明一下吗?
    • 收音机返回什么?
    • 它应该返回一个带有坐标集合的收音机,其中一些坐标被过滤掉了。但是当我返回 Response::json($radios->values()->all());我得到了未经过滤的坐标集合。
    • 但是你没有过滤任何东西..在你的过滤器函数中你应该使用例如return $coordinate > 2;如果你只想要大于2的坐标
    • $坐标> 2;与 // 返回 true 或 false 相同;在我的代码中
    猜你喜欢
    • 2021-03-02
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多