2017-03-23 5 views
1

Ich wollte das Ergebnis nur mit den Werten haben, die nicht mit dem Tabellenspaltennamen in Laravel 4.2 übereinstimmen. Zum BeispielLaravel - DB-Ergebnis ohne Tabellenspaltenname erhalten

$recs = DB::table('table_name') 
     ->select('id', 'title') 
     ->get(); 

das Ergebnis ist

array(2) { 
    [0]=> 
    object(stdClass)#863 (2) { 
    ["id"]=> 
    int(2) 
    ["title"]=> 
    string(8) "my title" 
    } 
    [1]=> 
    object(stdClass)#862 (2) { 
    ["id"]=> 
    int(3) 
    ["title"]=> 
    string(10) "my title 2" 
    } 
} 

aber ich will nur das Ergebnis nicht die Spaltennamen haben, wie

[ 
    2, 
    "my title" 
], 
[ 
    3, 
    "my title 2" 
] 

ja, ich habe es die durch Looping machen Ergebnis und neues Array ohne Spaltennamen. Aber gibt es irgendeine Möglichkeit, das Ergebnis auf diese Weise mit Laravel zu erzielen?

Antwort

1

Versuchen

$recs = DB::table('table_name')->pluck('id', 'title'); 
dd($recs->all()); 
+0

es eine Reihe zeigt ... das ist alles :( – user2609021

+0

Oh sorry, müssen Sie 'alle()' anhängen. Wieder meinen Code überprüfen. – EddyTheDove

+0

‚zupfen‘ Rückkehr eine Zahl, und so zeigt es einen Fehler, wenn 'all()' auf eine Zahl gesetzt wird – user2609021

1

Sie die map() verwenden können und die array_values() Methoden:

$recs->map(function($i) { 
    return array_values((array)$i); 
}) 

ich Laravel 4.2 bin nicht sicher, aber ich habe es getestet und es funktioniert perfekt in Laravel 5.3. Wenn es in 4.2 nicht funktioniert, verwenden Sie stattdessen die native Funktion array_map().

+1

Das ist die einzige (fast) richtige Antwort für das, was ich weiß.Sie müssen nur 'return array_values ​​($ i-> toArray ()); 'um array_values ​​zu verwenden. Davon abgesehen bin ich wirklich an Use Cases interessiert (das Konvertieren von lesbaren Schlüsseln in Indizes). – devk

+0

@devk Ich habe es auch getestet und da OP Query Builder hier benutzt , 'toArray()' wird einen Fehler zurückgeben. Mindestens in 5.3 (nicht sicher über 4.2 obwohl). Ich habe meinen Code bearbeitet, um Objekte in Arrays zu werfen. Ich habe falschen Code zuerst kopiert. Danke für Mentio Das zu verstehen. –

1

Reference

Versuchen $recs->flatten()->all()

aktualisieren

Da Ihr $recs sieht aus wie ein Array aus Ihrem Fehler. Versuchen Sie, zu collection zu konvertieren. Ich hoffe, das auf v4.2 arbeiten

$recsCollection = new \Illuminate\Database\Eloquent\Collection($recs); 
$recsCollection->flatten()->all(); 
+0

danke für die Antwort ... ich bekomme Fehler seit im mit Laravel 4.2 und die angegebene Referenz ist in 5.4 – user2609021

+0

@ user2609021 Ich aktualisierte das Tag –

+0

Fehler erhalten "Call zu einem Mitglied Funktion flatten() auf Array" – user2609021