LaravelのIDの配列に従ってコレクションを並べ替えます

ABDeveloper

このような名前のコレクションがあるとしますcategories

Collection {#447
  #items: array:3 [
    0 => array:6 [
      "pos" => "0"
      "col" => "1"
      "row" => "1"
      "size_x" => "2"
      "size_y" => "1"
      "cat_id" => "1"
    ]
    1 => array:6 [
      "pos" => "0"
      "col" => "3"
      "row" => "1"
      "size_x" => "1"
      "size_y" => "1"
      "cat_id" => "11"
    ]
    2 => array:6 [
      "pos" => "0"
      "col" => "1"
      "row" => "2"
      "size_x" => "2"
      "size_y" => "1"
      "cat_id" => "10"
    ]
]
}

一方、次のようなIDの配列があります。

[11,10,1]

次にcat_id、配列に並べ替えられたインデックスに基づいて、そのコレクションの要素を並べ替えたいと思います結果の配列を次のようにしたいことを意味します:

Collection {#447
  #items: array:3 [
    0 => array:6 [
      "pos" => "0"
      "col" => "3"
      "row" => "1"
      "size_x" => "1"
      "size_y" => "1"
      "cat_id" => "11"
    ]
    1 => array:6 [
      "pos" => "0"
      "col" => "1"
      "row" => "2"
      "size_x" => "2"
      "size_y" => "1"
      "cat_id" => "10"
    ]
    2 =>array:6 [
      "pos" => "0"
      "col" => "1"
      "row" => "1"
      "size_x" => "2"
      "size_y" => "1"
      "cat_id" => "1"
    ] 
]
}

以下のコードを使用しましたが、正しく機能しません:

$grids_arr  = [11,10,1];

$categories = $categories->sortBy(function ($model) use ($grids_arr) {
    return array_search($model->cat_id, $grids_arr);
});

更新:
これは私が使用している完成したコードです:

        $categories = Category::isTile()->get();

        $grids = collect(config('settings.data_grids'));// This is an array of IDs
        if ($grids->isNotEmpty()) {

            $grids_arr = $grids->pluck("cat_id")->toArray();
            $grids_arr = array_map('intval', $grids_arr); //convert string array elements to integer

            $categories = $categories->sortBy(function ($catg) use ($grids_arr) {
                return array_search($catg->cat_id, $grids_arr);
            });
        }
Ali Sharifineyestani

config( 'settings.data_grids')と$ categoryの違いにより、おそらく応答していません。したがって、次のようにコードを編集します

次の3行をコードに追加してください。

$catIds = $categories->pluck('cat_id')->toArray(); //get all cat_id
$diff = array_diff($catIds, $grids_arr); // difference array from query
$grids_arr = array_merge($grids_arr , $diff); //merge difference with array

例えば:

        $categories = Category::select('*')->get(); //for example
        $array = [
            [
                "pos" => "0",
                "col" => "1",
                "row" => "1",
                "size_x" => "2",
                "size_y" => "1",
                "cat_id" => 1,
            ],
            [
                "pos" => "0",
                "col" => "1",
                "row" => "2",
                "size_x" => "2",
                "size_y" => "1",
                "cat_id" => 10,
            ]
        ];
        $grids = collect($array);

        if ($grids->isNotEmpty()) {
            $grids_arr = $grids->pluck("cat_id")->toArray();
            $grids_arr = array_map('intval', $grids_arr); 

            //Please add these three lines to your code
            $catIds = $categories->pluck('cat_id')->toArray(); 
            $diff = array_diff($catIds, $grids_arr);
            $grids_arr = array_merge($grids_arr, $diff);
            //-----

            $sorted = $categories->sortBy(function ($model) use ($grids_arr) {
                return array_search($model->cat_id, $grids_arr);
            });


            return $sorted->values()->all();
        }

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

IDの配列によるLaravelコレクションの並べ替え

分類Dev

PHPの値に従って配列を並べ替えます

分類Dev

Swiftの与えられたインデックスに従って配列を並べ替えます

分類Dev

配列またはコレクションの並べ替え

分類Dev

Laravelコレクションで月の配列を並べ替える

分類Dev

Laravelコレクションを別の配列で並べ替える

分類Dev

最初の配列に従って配列を並べ替える

分類Dev

RのサンプルIDに従って行列を並べ替えます

分類Dev

Laravelでの関係によってコレクションを並べ替える方法

分類Dev

文字列値の列に従ってパンダのデータフレーム行を並べ替えます

分類Dev

DOMINO RESTAPIはコレクションの並べ替え列を取得します

分類Dev

コレクション内の配列を並べ替えるにはどうすればよいですか?

分類Dev

最も古い日付から最新の日付に基づいて配列のコレクションを並べ替えるのに助けが必要PHP / laravel

分類Dev

子配列の数に従って配列の配列を並べ替える

分類Dev

LaravelとCollectionを使用して、DESCの日付でコレクションを並べ替えます

分類Dev

各要素のコンテンツの一部に従ってPowerShell配列を並べ替える

分類Dev

PHPは、別の配列で定義された順序に従って配列を並べ替えます

分類Dev

コレクションを別の配列で並べ替える

分類Dev

別の配列で定義された並べ替え順序に従って、配列を所定の位置に並べ替えます

分類Dev

配列の最後の要素を使用してコレクションを並べ替える方法

分類Dev

整数のリストに基づいてPOJOのコレクションを並べ替えます

分類Dev

javascriptの別の配列に従って配列を並べ替える方法は?

分類Dev

配列の順序を使用してこのコレクションを並べ替えるにはどうすればよいですか?

分類Dev

バイナリ検索を使用して、並べ替えられた配列内の要素のコレクションを検索しますか?

分類Dev

春の豆を並べ替えて、コレクションに直接豆を保存します

分類Dev

javaScriptで指定されたインデックスに従って配列を並べ替えます

分類Dev

Java-属性に従って配列リスト内のものを並べ替えます

分類Dev

配列から元のデータを削除せずに、指定されたユーザーIDに従って配列を並べ替えます

分類Dev

Javaの複数の列の値に従って配列を並べ替える

Related 関連記事

  1. 1

    IDの配列によるLaravelコレクションの並べ替え

  2. 2

    PHPの値に従って配列を並べ替えます

  3. 3

    Swiftの与えられたインデックスに従って配列を並べ替えます

  4. 4

    配列またはコレクションの並べ替え

  5. 5

    Laravelコレクションで月の配列を並べ替える

  6. 6

    Laravelコレクションを別の配列で並べ替える

  7. 7

    最初の配列に従って配列を並べ替える

  8. 8

    RのサンプルIDに従って行列を並べ替えます

  9. 9

    Laravelでの関係によってコレクションを並べ替える方法

  10. 10

    文字列値の列に従ってパンダのデータフレーム行を並べ替えます

  11. 11

    DOMINO RESTAPIはコレクションの並べ替え列を取得します

  12. 12

    コレクション内の配列を並べ替えるにはどうすればよいですか?

  13. 13

    最も古い日付から最新の日付に基づいて配列のコレクションを並べ替えるのに助けが必要PHP / laravel

  14. 14

    子配列の数に従って配列の配列を並べ替える

  15. 15

    LaravelとCollectionを使用して、DESCの日付でコレクションを並べ替えます

  16. 16

    各要素のコンテンツの一部に従ってPowerShell配列を並べ替える

  17. 17

    PHPは、別の配列で定義された順序に従って配列を並べ替えます

  18. 18

    コレクションを別の配列で並べ替える

  19. 19

    別の配列で定義された並べ替え順序に従って、配列を所定の位置に並べ替えます

  20. 20

    配列の最後の要素を使用してコレクションを並べ替える方法

  21. 21

    整数のリストに基づいてPOJOのコレクションを並べ替えます

  22. 22

    javascriptの別の配列に従って配列を並べ替える方法は?

  23. 23

    配列の順序を使用してこのコレクションを並べ替えるにはどうすればよいですか?

  24. 24

    バイナリ検索を使用して、並べ替えられた配列内の要素のコレクションを検索しますか?

  25. 25

    春の豆を並べ替えて、コレクションに直接豆を保存します

  26. 26

    javaScriptで指定されたインデックスに従って配列を並べ替えます

  27. 27

    Java-属性に従って配列リスト内のものを並べ替えます

  28. 28

    配列から元のデータを削除せずに、指定されたユーザーIDに従って配列を並べ替えます

  29. 29

    Javaの複数の列の値に従って配列を並べ替える

ホットタグ

アーカイブ