top-think / top-think/think-orm
Model 内所有写操作为什么都默认开启事务
Open
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 437
- Forks
- 188
- PR merge metrics
- No merged PRs in 30d
Description
RT,这个是基于什么考虑
/**
* 删除当前的记录
* @access public
* @return bool
*/
public function delete(): bool
{
if (!$this->exists || $this->isEmpty() || false === $this->trigger('BeforeDelete')) {
return false;
}
// 读取更新条件
$where = $this->getWhere();
$db = $this->db();
$db->transaction(function () use ($where, $db) {
// 删除当前模型数据
$db->where($where)->delete();
// 关联删除
if (!empty($this->relationWrite)) {
$this->autoRelationDelete();
}
});
$this->trigger('AfterDelete');
$this->exists = false;
$this->lazySave = false;
return true;
}
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue provides the model delete() method and its db->transaction call; start there and trace how the transaction surrounds the model and relationWrite operations. Done would be a documented explanation of the rationale for default transactions on model writes, based on the repository’s observed behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- php
- Domain
- database
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100