只是一个简单的例子:如果我想在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) 我得到一个特殊的HTML代码:
< p>这是< a href =" http://www.test.hu">测试链接</a> 这是一个带有特殊字符的示例文本:é va</p>
(之前没有空格; char,但如果我不插入空格,则stackoverflow格式化它)
这不是一个通常的HTML代码,但如果我粘贴在一个空的html页面,浏览器会显示正常的标签:
< p >这是< 一个 HREF = "http://www.test.hu">测试链路< / A >,这是一个样本文本的特殊字符:EVA < / P >
此代码将显示在浏览器中:
这是一个测试链接.这是一个带有特殊字符的示例文本:éva
所以我想得到这个文本,但我不能使用Html.fromHtml,因为我使用的组件不支持Spanned.我想尝试StringEscapeUtils,但我无法导入它.
如何更换特殊字符并删除标签?
我有验证问题.在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已关闭",我无法保存第二条(好)记录.
哪个是这个问题的最佳解决方案?
doctrine-orm ×2
php ×2
android ×1
html ×1
java ×1
postgresql ×1
sequence ×1
tags ×1
unique ×1
validation ×1