現在、あるシステム管理ツールをlaravelで作成しています。
今、下のようなシステムテーブルの内容を一覧で表示する機能を作成しています。
ID | NAME | creator_id |
---|---|---|
1 | TEST1 | A0001 |
2 | TEST2 | A0002,A0003 |
3 | TEST3 | A0004 |
テーブルのカラム「creator_id」には、システムの管理担当者の社員番号が複数入るようになっていて、
「creator_id」は、社員マスタに紐づくようになっています。
ID | CODE | NAME |
---|---|---|
1 | A001 | テスト太郎 |
2 | A002 | テスト次郎 |
3 | A003 | テスト三郎 |
4 | A004 | テスト花子 |
今回やりたいことは、システムテーブルの「creator_id」を社員マスタの「NAME」に置き換えて、下のような一覧で表示させたいことです。
ID | NAME | creatorname |
---|---|---|
1 | TEST1 | テスト太郎 |
2 | TEST2 | テスト次郎、テスト三郎 |
3 | TEST3 | テスト花子 |
SQLについては、このページを参考に作成し、実際に想定通りの結果を取得できました。
SQL
1SELECT 2 S.ID, 3 S.NAME, 4 group_concat(M.NAME SEPARATOR '、') AS creatorname 5FROM システム AS S 6 LEFT JOIN 社員マスタ AS M ON S.creator_id REGEXP CONCAT("(^|,)", M.CODE, "(,|$)") 7GROUP BY S.ID;
ただ、このSQLをlaravelにどうやって組み込めばいいのかわからず、作業が止まっています。
初心者のため、クエリビルダの使い方が良くわからないため、ご教示いただければと思います。
よろしくお願いします。