記 DB::raw () 查詢 及 collection 的 pluck () 方法

beatles發表於2019-08-16

使用場景: laravel-admin 中 select 表單元件的值 (options) 來自資料庫

  1. mysql 資料庫要查詢 concat 兩個欄位

    $list = Nav::select('id', 'concat(id,name) as text')->all(); // 失敗  
    $list = Nav::select(DB::raw('id', 'concat(id,name) as text'))->all(); // 成功
  2. 根據拿到的 $list, 把 id 當作鍵, text 當作值形成新陣列

    // 要求形如
    [
    '1' => '1namea',
    '2' => '2nameb',
    ...
    ]
    // 使用 foreach 固然能解決
    $arr = [];
    foreach($list as $value) {
    $arr[$value->id] = $value->text;
    }
    // 但是 larave-collection 提供了更優雅的做法   
    $arr = $list->plucked('text', 'id')->all();
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章