filter()
メソッドは、基になるコレクション配列のキーを変更しないという問題があります。だから、コレクションはまだ配列を表すされ、それはあなたの配列は次のようになりますことだけである:
[
4 => Object4,
7 => Object7,
]
これはPHPで完全に有効な配列ですが、これはJSONで適切な配列ではありません。これはJSONでは配列として表現できないため、JSONではオブジェクトに変換されます。
これをJSONで配列として正しく表現するには、Collection配列を再キーする必要があります。適切な方法はvalues()
メソッドです。実行するのは、基本配列のarray_values
です。これは、この中に上記の配列を向けるだろう。
[
0 => Object4,
1 => Object7,
]
さて、これはJSONを理解することができ、代わりにオブジェクトの配列として扱われることを適切な数値添字の配列です。
flatten
はこの特定のケースで使用できますが(コレクションはEloquentモデルのコレクションです)、実際には正しい方法ではなく、意図しない結果につながる可能性があります。さらに、それは必要でない余分なロジックをたくさん実行します。最良の方法は、実現しようとしているものに対して適切な方法を使用することです。それはvalues()
メソッドです。
$obj = Cars::with('brand')->orderBy('id')->get();
return $obj->filter(function($value, $key)
{
return $value->display == true;
})
->values();
私はflatten()があなたのことをやっているかもしれないと思っていますが、この出力をどのように取得しているかを見るために、いくつかのサンプルコードを提供する必要があります。 – Dwight
ええ、 'flatten()'はこのトリックを行うべきです – manniL
@Dwightは - flattenが機能しました。私が受け入れる答えを自由に追加してください。 – tgun926