Вот пример моих таблиц
<table name="user">
<column name="name" type="varchar" size="255" required="true" />
</table>
<table name="environment">
<column name="user_id" type="integer" size="11" required="true" />
<column name="insertion_time" type="timestamp" required="true" phpName="InsertionTime" />
<foreign-key foreignTable="user" phpName="User">
<reference local="user_id" foreign="id"/>
</foreign-key>
</table>
Я хочу вставить несколько environment
, связанных с их user
.
function insertEnvironment($id) {
$user = findUser($id);
$env = new Environment();
$env->setUser($user);
$env->setInsertionTime(new DateTime());
$env->save();
}
function findUser($id) {
$user = UserQuery::create()->filterByUserId($id)->findOneOrCreate();
return $user;
}
Я могу вставить более одной environment
на одной странице, но я не хочу воссоздавать user
, если он уже существует.
Сейчас он создает один user
каждый раз, когда я вставляю environment
(во время выполнения той же страницы, после этого он работает как положено).
Как я могу принудительно вставить user
, чтобы при следующем обращении к нему он уже существовал?
Есть ли другой способ достичь этого без принудительного «сброса»?
Я не хочу отслеживать пользователей вручную.
Редактировать : я изменил способ создания пользователя (код выше отредактирован), но это не помогает.