Wygląda mi na to, że nieprawidłowo zdefiniowany jest jeden lub dwa klucze obce w relacji. Przez to $mod->modelData2 lub $mod->modelData3 nie zwraca obiektu.
Na pewno masz literówkę, powinno być "self::HAS_ONE" zamiast "self::HAS ONE". Zresztą całość wygląda dość podejrzanie, np pewno robiłeś to wg dokumentacji?
Spróbuj dla testu zakomentować pojedyncze odwołania i sprawdzić czy problem jest tylko z jedną relacją, czy z obiema.
Przy relacjach typu HAS_MANY i HAS_ONE w trzecim parametrze podajesz nazwę kolumny, która przechowuje informacje o kluczu obcym w modelu, do którego chcesz utworzyć relację (czyli Model2 i Model2). zwykle nie jest to ‘id’ tylko coś w stylu ‘model1_id’.
komentowałem już wcześniej i mam jeszcze belongs to ale to z kolei działa ok a HAS_ONE i HAS_MANY już nie.
Z kolei jeśli chodzi o trzeci parametr w relacjach has one i has many to w jednym mam model1_id natomiast w drugim id bo jest jako klucz główny jednej tabeli i jednocześnie kluczem obcym do drugiej
Relacja HAS_MANY zwraca nie obiekt a tablicę obiektów, powinieneś więc odwoływać do nich po indeksie, np
$mod->modelData2[0]->name
albo najlepiej przeglądać foreachem.
Co do HAS_ONE to prawdopodobnie masz jakieś niespójności w bazie i dla któregoś obiektu typu Model1 nie ma pasującego obiektu typu Model3. Przed wyświetleniem nazwy obiektu sprawdzaj czy on w ogóle istnieje i zobacz czy któregoś nie brakuje.