【发布时间】:2012-01-04 17:32:33
【问题描述】:
这是我的表格示例
<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>
我想插入一些与他们的user 链接的environment。
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 已经存在,我不想重新创建它。
现在,每次我插入 environment 时,它都会创建一个 user(在同一页面执行期间,之后它会按预期工作)。
如何强制插入user,以便下次我想访问它时它已经存在?
是否有另一种方法可以在不强制“刷新”的情况下实现这一目标? 我不想手动跟踪用户。
编辑:我更改了创建用户的方式(上面的代码已编辑),但没有帮助。
【问题讨论】: