Значения по-умолчению, если не найденас строка

Есть таблица user и user_info. При регистрации создается строка только в user. Когда я связываю эти таблицы по средствам ActiveRecord (left join) и соответствующей строки в user_info нет, то $model->userInfo возвращает null. Есть ли возможность это как-то исправить (чтобы возвращалась модель со стандартными полями)?

Конечно можно создавать соответствующие строки в user_info при регистрации. Но таких вспомогательных таблиц сейчас две и делать 3 запроса на вставку новой строки при регистрации не охота.

Ещё один вариант, это делать так… но это каряво.


<?php echo ($info = $data->userInfo) !== null ? $info->name : 'Неизвестный'; ?>

CActiveRecord вызывает метод getRelated() при обращении к связанным данным, можно перегрузить его, чтобы возвращалось то, что нужно (видимо, новый объект класса UserInfo с полями "Неизвестно", хотя подойдет в принципе любой объект с теми же полями).

P.S. Не торопитесь, когда пишите сообщения, попробуйте их сами прочитать сначала :) Особенно страшно выражение “чтобы возвращалась таблица со стандартными полями”.

Сейчас буду перезагружать, спасибо за совет.

Сорри, пишу довольно большой проект, код уже мозг заездил…

Проблема решена, ещё раз спасибо andy_s. Переопределил getRelated() таким образом, вдруг кому тоже понадобится.


	public function getRelated($name, $refresh = false, $params = array())

	{

		if(($result = parent::getRelated($name, $refresh, $params)) === null)

			$result = new $name;


		return $result;

	}