->get
executes query immediately, so what you want is
$query = $table ->findById($id) ->contain(['level1']); if ($condition) { $query->contain(['level2']); } $query->first();
->get
executes query immediately, so what you want is
$query = $table ->findById($id) ->contain(['level1']); if ($condition) { $query->contain(['level2']); } $query->first();