小编Rob*_*toq的帖子

Doctrine2没有将序列设置为id列的默认值(postgres)

只是一个简单的例子:如果我想在postgres中创建一个带有自动填充id的表,我运行这个sql:

CREATE SEQUENCE person_id_seq  START 1;

CREATE TABLE person (
    id         integer PRIMARY KEY DEFAULT nextval('person_id_seq'),
    name       varchar(100) NOT NULL
);
Run Code Online (Sandbox Code Playgroud)

在学说中我设置了所有财产

class Person {

/**
 * @Id
 * @Column(type="integer", nullable=false)
 * @GeneratedValue(strategy="SEQUENCE")
 * @SequenceGenerator(sequenceName="person_id_seq", initialValue=1, allocationSize=100)
 */
private $id;
Run Code Online (Sandbox Code Playgroud)

但是当我生成sql(php doctrine orm:schema-tool:create --dump-sql)时,我得到了它:

CREATE TABLE person (
    id INT NOT NULL,
    name VARCHAR(100) NOT NULL
);
CREATE SEQUENCE person_id_seq INCREMENT BY 100 MINVALUE 1 START 1
Run Code Online (Sandbox Code Playgroud)

但不要将其设置为默认值

\ d人

      Column       |              Type              | Modifiers
-------------------+--------------------------------+-----------
 id                | integer                        | …
Run Code Online (Sandbox Code Playgroud)

php postgresql sequence doctrine-orm

14
推荐指数
2
解决办法
2万
查看次数

Android从html获取文本

我得到一个特殊的HTML代码:

< p>这是< a href =" http://www.test.hu">测试链接</a> 这是一个带有特殊字符的示例文本:&#233; va</p>

(之前没有空格; char,但如果我不插入空格,则stackoverflow格式化它)

这不是一个通常的HTML代码,但如果我粘贴在一个空的html页面,浏览器会显示正常的标签:

< p >这是< 一个 HREF = "http://www.test.hu">测试链路< / A >,这是一个样本文本的特殊字符:EVA < / P >

此代码将显示在浏览器中:

这是一个测试链接.这是一个带有特殊字符的示例文本:éva

所以我想得到这个文本,但我不能使用Html.fromHtml,因为我使用的组件不支持Spanned.我想尝试StringEscapeUtils,但我无法导入它.

如何更换特殊字符并删除标签?

html java tags android

6
推荐指数
1
解决办法
2961
查看次数

学说2验证

我有验证问题.在Doctrine 1中我使用了这个:

if ($model->isValid()) {
    $model->save();
} else {
    $errorStack = $model->getErrorStack();
    ...
}
Run Code Online (Sandbox Code Playgroud)

并在$ errorStack中我得到了列名和错误消息.但是在Doctrine 2中我可以使用它:

实体

/**
 * @PrePersist @PreUpdate
 */
public function validate()
{
    if ($this->name == null)) {
        throw new \Exception("Name can't be null"); 
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器:

try {
    $user = new \User();
    //$user->setName('name');
    $user->setCity('London');
    $this->_entityManager->persist($user); 
    $this->_entityManager->flush();
} catch(Exception $e) {
    error_log($e->getMessage());
} 
Run Code Online (Sandbox Code Playgroud)

但我有两个问题:

  • 我不知道哪一列?
  • 我不想手动检查唯一

如果我从实体中跳过validate(),那么将捕获唯一(来自此error.log)

Unique violation: 7 ERROR:  duplicate key value violates unique constraint "person_email_uniq"
Run Code Online (Sandbox Code Playgroud)

但是例如用户保存2条记录,第一条是错误的,但第二条有效,第一次保存后EntityManager将关闭,因为"EntityManager已关闭",我无法保存第二条(好)记录.

哪个是这个问题的最佳解决方案?

php validation unique doctrine-orm

6
推荐指数
1
解决办法
3764
查看次数

标签 统计

doctrine-orm ×2

php ×2

android ×1

html ×1

java ×1

postgresql ×1

sequence ×1

tags ×1

unique ×1

validation ×1