2017-03-23 52 views
1

我想有隻不與Laravel 4.2表列名的值的結果。例如,Laravel - 獲取數據庫的結果,而不表的列名

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

結果是

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" 
    } 
} 

但我想只有結果而不是列名稱,如

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

是的,我可以通過循環將使它結果並創建沒有列名的新數組。但是有什麼方法可以用Laravel以這種方式得到結果?

回答

1

嘗試

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

它顯示了許多......這就是所有:( – user2609021

+0

噢,對不起,你需要追加'所有()'。再次檢查我的代碼。 – EddyTheDove

+0

「勇氣」返回一個數字,所以它顯示了當把「所有的()」的數量 – user2609021

1

您可以使用map()array_values()方法:

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

我不知道Laravel 4.2,但我只是測試它和它的作品完美地Laravel 5.3。如果它在4.2中不起作用,請改用本地array_map()函數。

+1

這是我所知道的唯一的(幾乎)正確答案錯誤。你需要做的僅僅'回報array_values($ I->指定者( ));'使用array_values的話雖這麼說,我在用例這個很感興趣(將人類可讀鍵進入索引) – devk

+0

@devk我已經過測試,並因爲OP在這裏使用查詢生成器。 '指定者()'會返回一個錯誤。至少在5.3(不知道4.2雖然)。我已經編輯我的代碼投對象數組。我先複製錯誤的代碼。感謝mentio那個。 –

1

Reference

嘗試$recs->flatten()->all()

更新

由於您$recs看起來像你的錯誤的數組。嘗試轉換爲collection。我希望這將在4.2版工作

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

感謝您的答覆...即時得到錯誤,因爲使用Laravel 4.2 IM和給定的基準是5.4 – user2609021

+0

@ user2609021我更新了標籤 –

+0

得到錯誤「調用一個成員函數扁平化()對數組」 – user2609021

相關問題