2017-12-18 6 views
2

私はlaravelと一緒に働いて、少しのAPIを作っています。 keyBy()に問題があります。 私はこのkeyBy()はキーを変更しません。 Laravel 5.5

"translate": [ 
    0: {"id": 0, "lang": "az" }, 
    1: {"id": 0, "lang": "ru" }, 
    2: {"id": 0, "lang": "en" } 
] 

のような応答を取得し、私はこのようなこれらの配列のキーを変更したい:

"translate": [ 
    "az": {"id": 0, "lang": "az" }, 
    "en": {"id": 0, "lang": "ru" }, 
    "ru": {"id": 0, "lang": "en" } 
] 

そのスニペット

foreach ($categories as $key => $row) { 
    if ($row) { 
     $row->translate = $row->translate->keyBy('lang'); 
    } 
} 

とが、結果は同じです。配列キーは変更されません。どうしてか分かりません。私はちょうどdd($row->translate)と私は私が欲しい結果を得たが、最後の結果は以前と同じです。ありがとう!

+0

新しい配列変数に '$ row-> translate-> keyBy( '​​lang');を割り当てる必要があります。あなたは新しい配列を作成しなければなりません。あなたは軸配列を変更しません。 – GYaN

+0

また、 'as&$ row'を試すことができます –

+0

' as&$ row'を使ったときは何も変わりませんでした。 – rufatZZ

答えて

0

問題なく動作するはずです。問題はどこか他の場所にあると思います。そこにあるその結果

$object = new stdClass(); 

$object->translate = collect([ 
    0 => (object) ['id' => 0, 'lang' => 'az'], 
    1 => (object) ['id' => 0, 'lang' => 'ru'], 
    2 => (object) ['id' => 0, 'lang' => 'en'], 
]); 

$object2 = new stdClass(); 

$object2->translate = collect([ 
    0 => (object) ['id' => 0, 'lang' => 'x'], 
    1 => (object) ['id' => 0, 'lang' => 'y'], 
    2 => (object) ['id' => 0, 'lang' => 'z'], 
]); 

$categories = [$object, $object2];  

foreach ($categories as $key => $row) { 
    if ($row){ 
     $row->translate = $row->translate->keyBy('lang'); 
    } 
}  

dd($categories); 

array:2 [▼ 
    0 => {#329 ▼ 
    +"translate": Collection {#346 ▼ 
     #items: array:3 [▼ 
     "az" => {#335 ▼ 
      +"id": 0 
      +"lang": "az" 
     } 
     "ru" => {#337 ▼ 
      +"id": 0 
      +"lang": "ru" 
     } 
     "en" => {#338 ▼ 
      +"id": 0 
      +"lang": "en" 
     } 
     ] 
    } 
    } 
    1 => {#340 ▼ 
    +"translate": Collection {#345 ▼ 
     #items: array:3 [▼ 
     "x" => {#341 ▼ 
      +"id": 0 
      +"lang": "x" 
     } 
     "y" => {#342 ▼ 
      +"id": 0 
      +"lang": "y" 
     } 
     "z" => {#343 ▼ 
      +"id": 0 
      +"lang": "z" 
     } 
     ] 
    } 
    } 
] 

ので、あなたは結果がdd($data)

enter image description here

+0

この翻訳は私の 'json'オブジェクトの主要な部分です。私はコレクション内で使用するためにこれを分けて戻す必要がありますか? – rufatZZ

+0

申し訳ありませんが、何を意味するのか分かりませんが、コレクションを使用している場合は問題なく動作するはずです。私のコードとあなたのものを比較して、有効な結果を確認してください。 –

+0

うん、私はそれに取り組んでいます。 :)お返事ありがとう:) – rufatZZ

0

translateを変更して見るように、この例を見てみましょうtranslate IDE jsonオブジェクト(api応答)

enter image description here

私は、キーを変更するかわかりません。

+0

まず質問を更新する必要があります。さらに、正確にあなたが何をしているのか、返答を返すのかなどを教えてくれるわけではありません。 –

+0

私の質問は最新です。私は 'api'レスポンスを送るとキーが表示されるようにしたい。現時点では、私はそれを得ることができません。 'return response() - > make($ data);'のような応答を返し、 'HomeController'を受け取ってview用に準備します。 – rufatZZ

+0

素晴らしい。そして、ここでどのようなデータが何であるかをどのように知ることができますあなたの質問には含まれていません!あなたの質問では、$ categoriesではなく$ categoriesで何かを作っています。 –

関連する問題