推动唯一密钥对的验证
Propel validation for unique key pair
在我的数据库中 user_group table UNIQUE_KEY 由两列组成,user_id
和 user_group_id
。这就是推进架构中的样子:
<unique name="UNIQUE_KEY">
<unique-column name="user_id"/>
<unique-column name="user_group_id"/>
</unique>
如果它是关于一列的,那么您可以像下面这样设置验证行为:
<behavior name="validate">
<parameter name="rule1"
value="{column: column_name, validator: Unique, options {message:Your validation message here.}}"/>
</behavior>
所以我想知道的是如何为密钥对 user_id
和 user_group_id
设置唯一验证。是否有可能传递 column_names 的数组?任何建议将不胜感激。谢谢。
此功能尚不可用,但您有几个选择:
1.自己处理重复项:
// First check for a duplicate
$duplicates = TableAQuery::create()
->filterByKey1($key1)
->filterByKey2($key2)
->count();
if ($duplicates>0) {
throw new \PropelException('Row already exists');
}
// No duplicate, add the new row
2。通过 try-catch
:
处理底层重复数据库的 INSERT INTO
违规
try{
$obj->save();
} catch (PropelException $e) {
if (stripos($e->getMessage(), ' duplicate key ') !== false) {
throw new \PropelException('Row already exists');
}
}
如果性能是一个问题,选项 2 可能不会那么痛苦,因为它可以节省您的查询,但如果没有将其配置为忽略重复项,则可能会增加您的 auto_increment(尤其是在 MySQL 上)插入。
在我的数据库中 user_group table UNIQUE_KEY 由两列组成,user_id
和 user_group_id
。这就是推进架构中的样子:
<unique name="UNIQUE_KEY">
<unique-column name="user_id"/>
<unique-column name="user_group_id"/>
</unique>
如果它是关于一列的,那么您可以像下面这样设置验证行为:
<behavior name="validate">
<parameter name="rule1"
value="{column: column_name, validator: Unique, options {message:Your validation message here.}}"/>
</behavior>
所以我想知道的是如何为密钥对 user_id
和 user_group_id
设置唯一验证。是否有可能传递 column_names 的数组?任何建议将不胜感激。谢谢。
此功能尚不可用,但您有几个选择:
1.自己处理重复项:
// First check for a duplicate
$duplicates = TableAQuery::create()
->filterByKey1($key1)
->filterByKey2($key2)
->count();
if ($duplicates>0) {
throw new \PropelException('Row already exists');
}
// No duplicate, add the new row
2。通过 try-catch
:
INSERT INTO
违规
try{
$obj->save();
} catch (PropelException $e) {
if (stripos($e->getMessage(), ' duplicate key ') !== false) {
throw new \PropelException('Row already exists');
}
}
如果性能是一个问题,选项 2 可能不会那么痛苦,因为它可以节省您的查询,但如果没有将其配置为忽略重复项,则可能会增加您的 auto_increment(尤其是在 MySQL 上)插入。