ストアドプロシージャで対応する方法はどうでしょうか
lang
1DELIMITER $$
2
3CREATE PROCEDURE employees_payroll_settings()
4
5BEGIN
6
7SET @sql = NULL;
8
9SELECT
10 GROUP_CONCAT(DISTINCT
11 CONCAT(
12 'MAX(IF(`item_id` = ', `item_id`, ', amount, NULL)) AS `', hoge_items.hoge_item, '`')
13 ) INTO @sql
14FROM hoge_item_settings
15JOIN hoge_items
16ON hoge_items.id = hoge_item_settings.item_id;
17
18SET @sql = CONCAT('SELECT employees.employee_name, ', @sql, ' FROM hoge_item_settings JOIN employees ON employees.id = hoge_item_settings.employee_id GROUP BY employee_id');
19
20PREPARE stmt FROM @sql;
21EXECUTE stmt;
22DEALLOCATE PREPARE stmt;
23
24END $$
25
26DELIMITER
さらにコントローラーに次を加えてみます。
lang
1$hoge_items = DB::table('hoge_items')
2 ->distinct()
3 ->join('hoge_item_settings', 'hoge_items.id', '=', 'hoge_item_settings.item_id')
4 ->select('hoge_items.*', 'hoge_item_settings.item_id')
5 ->get();
6 $hoge_item_settings = DB::select('CALL employees_payroll_settings()');
7 return View::make('hoge_item_setting.index', array(
8 'hoge_item_settings' => $hoge_item_settings,
9 'hoge_items' => $hoge_items
10 ));"
11
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。