Вот пример моих таблицфлеш базы данных Force с помощью Propel
<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
, чтобы в следующий раз, когда я хочу получить к нему доступ, он уже существует?
Есть ли другой способ достичь этого, не нажимая «флеш»? Я не хочу отслеживать пользователей вручную.
Редактировать: Я изменил способ создания пользователя (код выше отредактирован), но это не помогает.
Вы можете объяснить, как это дерьмо работает? – julestruong
Более 5 лет спустя, я не могу. Извините – Jonas