public function delete()
{
if (false === $this->trigger('before_delete', $this)) {
return false;
}
$db = $this->db();
$db->startTrans();
try {
$result = $db->delete($this->data);
if ($result) {
// 获取主键数据
$pk = $this->data[$this->getPk()];
// 删除关联数据
foreach ($this->relationModel as $key => $model) {
$table = is_int($key) ? $db->getTable($model) : $model;
$query = clone $db;
$query->table($table)->where($this->fk, $pk)->delete();
}
}
$this->trigger('after_delete', $this);
$db->commit();
return $result;
} catch (\Exception $e) {
$db->rollback();
throw $e;
}
}