From 7ad5c50aeecc55e40eff76a716a30a7a9ccc3237 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Mon, 27 Apr 2026 19:04:17 +0200 Subject: [PATCH] Host|Service: Use `LEFT JOIN` for optional relations fixes #1354 --- library/Icingadb/Model/Host.php | 9 ++++++--- library/Icingadb/Model/Service.php | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/library/Icingadb/Model/Host.php b/library/Icingadb/Model/Host.php index 22684aed..f680bbfe 100644 --- a/library/Icingadb/Model/Host.php +++ b/library/Icingadb/Model/Host.php @@ -257,17 +257,20 @@ class Host extends Model $relations->hasOne('unreachable_parent', UnreachableParent::class)->setJoinType('LEFT'); $relations->belongsTo('environment', Environment::class); - $relations->belongsTo('eventcommand', Eventcommand::class); + $relations->belongsTo('eventcommand', Eventcommand::class) + ->setJoinType('LEFT'); $relations->belongsTo('checkcommand', Checkcommand::class); $relations->belongsTo('timeperiod', Timeperiod::class) ->setCandidateKey('check_timeperiod_id') ->setJoinType('LEFT'); $relations->belongsTo('action_url', ActionUrl::class) ->setCandidateKey('action_url_id') - ->setForeignKey('id'); + ->setForeignKey('id') + ->setJoinType('LEFT'); $relations->belongsTo('notes_url', NotesUrl::class) ->setCandidateKey('notes_url_id') - ->setForeignKey('id'); + ->setForeignKey('id') + ->setJoinType('LEFT'); $relations->belongsTo('icon_image', IconImage::class) ->setCandidateKey('icon_image_id') ->setJoinType('LEFT'); diff --git a/library/Icingadb/Model/Service.php b/library/Icingadb/Model/Service.php index 42cbb8a3..87818161 100644 --- a/library/Icingadb/Model/Service.php +++ b/library/Icingadb/Model/Service.php @@ -254,13 +254,16 @@ class Service extends Model $relations->belongsTo('timeperiod', Timeperiod::class) ->setCandidateKey('check_timeperiod_id') ->setJoinType('LEFT'); - $relations->belongsTo('eventcommand', Eventcommand::class); + $relations->belongsTo('eventcommand', Eventcommand::class) + ->setJoinType('LEFT'); $relations->belongsTo('action_url', ActionUrl::class) ->setCandidateKey('action_url_id') - ->setForeignKey('id'); + ->setForeignKey('id') + ->setJoinType('LEFT'); $relations->belongsTo('notes_url', NotesUrl::class) ->setCandidateKey('notes_url_id') - ->setForeignKey('id'); + ->setForeignKey('id') + ->setJoinType('LEFT'); $relations->belongsTo('icon_image', IconImage::class) ->setCandidateKey('icon_image_id') ->setJoinType('LEFT');