2017-01-03 73 views
1

如何獲取我從MySQL中Laravel DB選擇功能獲取Laravel DB選擇功能從MySQL特定的列值

結果後獲得一個特定的列值,下面是我的PHP代碼。

$list = DB::select('SELECT DISTINCT a.pincode FROM table_name nvs 
     JOIN areas a on nvs.area_id = a.id 
     where nvs.city_id = ?;', [$area_id]); 

以下是上述查詢的結果。

[ 
    { 
    "pincode": "560005" 
    }, 
    { 
    "pincode": "560006" 
    } 
] 

我只需要pincode值而不是鍵值對。所以我試着用下面的代碼。

return array_column($list->toArray(), 'pincode'); 

它給電話上陣列一個成員函數的toArray()。

我怎樣才能得到沒有使用foreach循環的值。

回答

我用下面的代碼

$pincode_list = DB::table('table_name as nvs') 
      ->join('areas as a', 'nvs.area_id', '=', 'a.id') 
      ->select('a.pincode') 
      ->where('nvs.city_id', '=', $area_id) 
      ->distinct('a.pincode')->pluck('pincode')->toArray(); 

結果爲:

[ 
    "560067", 
    "560035" 
] 
+1

使用pluck單值 – Bugfixer

+0

感謝它的工作 – Sharath

回答

2

最好的方法是使用查詢生成器或口才,用這個來代替get()

->pluck('pincode')->toArray(); 
+1

感謝它的工作 – Sharath

+1

@Sharath如果它的工作接受它的解決方案。 –

0
$all_pincodes = array_values ($list); 

但我建議使用Laravel洋洋灑灑因爲你是無論如何使用Laravel所以最好使用內部功能來緩解這一過程。

1

我想查詢應該像

$area_ids = DB::table('table_name') 
     ->join('areas', 'nvs.area_id', '=', 'table_name.id') 
     ->select('table_name.pincode') 
     ->where('nvs.city_id', '=', $area_id) 
     ->distinct()->get(); 

,如果你得到它作爲對象,並希望它是陣列可以使用指定者()這裏像$ area_ids = $ area_ids->指定者() ;你可以請測試它,讓我知道新的狀態。

+0

@Sharath檢查https://laravel.com/docs/5.3/queries#joins如果你正在編寫核心PHP PDO查詢你爲什麼使用Laravel? –

+0

現在我正在使用laravel功能代替PDO查詢 – Sharath

+1

@Sharath如果您發現我的答案有幫助,那麼您應該有投票權。 –

0

使用您的變種:

\DB::setFetchMode(\PDO::FETCH_ASSOC); 
$data = \DB::select($yourQuery); 
$pincodes = array_pluck($data, 'pincode') 
\DB::setFetchMode(config('database.fetch')); //return fetch to default 

使用更加流暢的方式:

$pincodes = \DB::table('table')->pluck('pincode')->toArray(); //do not forget about wheres and joins in this query. 

我會建議你第二個變體,因爲這是更清晰的方式來得到你需要的結果。