2017-12-21 4 views
0

ich Laravel Framework 5.5.26 verwende und ich mit dem folgenden Aufruf meine db bin Abfrage:Laravel 5.5 - Parse Ergebnis db Abfrage

$symbolsArray = DB::table('exchanges') 
     ->join('markets', 'exchanges.id', '=', 'markets.exchanges_id') 
     ->where('name', $exchangeName) 
     ->get(array(
      'symbol', 
     )); 

Wenn ich var_dump($symbolsArray) erhalte ich folgende Ausgabe:

class Illuminate\Support\Collection#619 (1) { 
    protected $items => 
    array(99) { 
    [0] => 
    class stdClass#626 (1) { 
     public $symbol => 
     string(7) "BCN/BTC" 
    } 
    [1] => 
    class stdClass#621 (1) { 
     public $symbol => 
     string(8) "BELA/BTC" 
    } 
    [2] => 
    class stdClass#623 (1) { 
     public $symbol => 
     string(7) "BLK/BTC" 
    } 
    [3] => 
    class stdClass#627 (1) { 
     public $symbol => 
     string(8) "BTCD/BTC" 
    } 
    ... 
    } 
} 

I Ich versuche, die $symbol wie folgt zu erhalten:

$symbolsArray[$key]['symbol']

Allerdings bekomme ich folgende Fehlermeldung:

Cannot use object of type stdClass as array 

Irgendwelche Vorschläge, wie die symbol von der Abfrageausgabe zugreifen?

Antwort

3

Es ist eine Sammlung von Objekten, keine Arrays. So müssen Sie diese Syntax verwenden Eigenschaft eines Objekts in einer Sammlung zu erhalten:

$symbolsArray[$key]->symbol 

Wenn Sie nur Symbole bekommen müssen, verwenden Sie pluck() statt get():

->pluck('symbol')->toArray() 
1

Einfache convert gegebene Ausgabe als wie Array

$symbolsArray = DB::table('exchanges') 
     ->join('markets', 'exchanges.id', '=', 'markets.exchanges_id') 
     ->where('name', $exchangeName) 
     ->get(array(
      'symbol', 
     ))->toArray(); // get data as array not object 
1

Das Ergebnis der DB unten :: Tabelle() -> get() ist immer ein 012.377., auf deren Attribute Sie wie Variablen innerhalb einer PHP-Klasse mit -> zugreifen.

In Ihrem Beispiel ist Ihr $symbolsArray kein Array, Sie greifen auf den Inhalt mit $symbolsArray[$key]->symbol zu.

Angenommen, Sie sind neu in Laravel, ich schlage vor, Sie sehen Laravel in ORM Eloquent gebaut. Es macht das Arbeiten mit Datenbanken einfach und unkompliziert, und wenn Sie ein wenig in die Sammlungen von Eloquent eintauchen, werden Sie sehen, dass sie das Arbeiten mit Daten zum Kinderspiel machen.

0

$ symbolsArray ist eine Sammlung und kein Array. Wenn Sie ein Array erhalten, können Sie das Symbol aus der Sammlung $symbolsArray = DB::table('exchanges') ->join('markets', 'exchanges.id', '=', 'markets.exchanges_id') ->where('name', $exchangeName) ->pluck('symbol')->all(); auswählen oder Sie können Ihre Sammlung in ein Array konvertieren, indem Sie $new_array = $symbolsArray->toArray()