Есть запрос (рабочий)
SELECT
(
CASE
WHEN t.source = 'viber' THEN (SELECT vu.token FROM viber_users vu WHERE vu.id = t.field_id)
WHEN t.source = 'telegram' THEN (SELECT tu.token FROM telegram_users tu WHERE tu.id = t.field_id)
END
) AS token
FROM
table t
Но я стремлюсь сделать его более универсальным. То есть, при ситуации что source может стать еще каким-то, к примеру, facebook, мне не пришлось править текущий запрос. Но я стремлюсь избежать такой ситуации
По итогу я хочу получить что-то вроде:
SELECT
(
SELECT
tu.token
FROM
CONCAT(t.source, '_users') tu
WHERE
tu.id = t.field_id
) AS token
FROM
table t
Да, я понимаю то такой вариант работать не будет, и по хорошему мне бы назначить переменную
SET @table = 'viber_users';
SELECT
(
SELECT
tu.token
FROM
@table tu
WHERE
tu.id = t.field_id
) AS token
FROM
table t
Но здесь я стал в ступор. Мне нужно назначать эту переменную в подзапросе, к тому же первая часть таблицы это поле родительской таблицы, и только вторая часть дефолтная.
Подскажите, как мне закончить запрос и перевести на laravel Facades DB?