2017-04-10 8 views
0

私はこのコードを持っている:キーを取得する方法 - >値の順序?

Setting::where('section', $section)->select('key', 'value')->pluck('value')->toArray(); 

それは、この生成します。私はこの

enable => "true" 
type => "native" 
must_be_registered => "true" 
allow_nested => "true" 

私はそれをどのように得るかが必要

0 => "true" 
    1 => "native" 
    2 => "true" 
    3 => "true" 

を?私は摘む(「キー」、「値」)を試みたが、それは一部が欠落していたいくつかの理由でDBからのすべての値を返しませんでした、これが出てきたものです:

array:3 [▼ 
     "true" => "allow_nested" 
     "native" => "type" 
] 

が、それは価値が出てきた=>キーの順序キーと値がありませんでした

どのようにしてキー=>値を取得できますか?

+0

使用後の最初のキーを来なければならない:キーとしてvalのようにキーと値。これはうまくいくかもしれません –

+0

私はあなたがそれをテストした後に間違っていれば訂正しますが、あなたがキーと値を選択すると、その2つを返します。もしあなたがそこから価値を引き出すならば、あなたは実際に「鍵」を失っています。それはあなたがちょうど摘み部分を削除する場合は動作しますか? –

+0

pluck部分を削除すると機能しません。別の配列が生成されます。各キーと値は、独自の配列内にあります。 –

答えて

3

ほとんどすべての値が得られない理由は、pluck関数でキー値のペアを交換したためです。また、配列キーは一意でなければならないことを忘れないでください。そうすれば、phpはそこでいくつかの切り捨てを行います。

これを試してください。

Setting::where('section', $section)->select('value', 'key')->pluck('value','key')->toArray(); 

その奇妙なようですが、値は以下のような声明として選択

0

あなただけの価値を捨てている!そのため、値を含む配列だけが返されます。

はい、あなたの情報を含む配列の配列が得られます。

これを解決するには、空の配列を作成し、foreachループを実行します。

$processed_array = array(); 

foreach($entries as $entry){ 
    $processed_arrray[$entry->key] = $entry->value; 
} 

私はそれはそれを行うための最善の方法だと思います。 Model.phpに新しい機能を作成し、データをkey -> value形式で1つの配列にまとめたい場合は、Model::yourCustomFunction($parameters);を実行するだけです。

これが役に立ちますようお願いいたします。それがあなたの解決策であるかどうか教えてください。

関連する問題