Один из подходов заключается в выборе права по умолчанию на сервере базы данных.
SELECT
IFNULL(NULLIF(a.field1, ''), 'No data') AS field1,
IFNULL(NULLIF(a.field2, ''), 'No data') AS field2,
IFNULL(NULLIF(ip.description, ''), 'No data') AS internal_project,
IFNULL(NULLIF(o.description, ''), 'No data') AS origin,
to_char(ad.origin_date,'YYYY') AS origin_date
FROM
archivalie AS a
LEFT JOIN archivalie_dating AS ad ON a.id = ad.archivalie_id
LEFT JOIN internal_project AS ip ON a.internal_project_id = ip.id
LEFT JOIN origin AS o ON a.origin_id = o.id
WHERE
a.id = $archivalie_id
Таким образом, вы можете выводить значения сразу, и вам не нужно прикасаться к существующему коду. IFNULL(NULLIF())
превращает пустые строки в NULL
, а NULL
в 'No data'
. Если вы хотите оставить только пустые строки, используйте только IFNULL()
.
С архитектурной точки зрения этому может не хватать элегантности (в зависимости от того, как вы на это смотрите), но это эффективно.