think\model\Relation::detach PHP Метод

detach() публичный Метод

解除关联的一个中间表数据
public detach ( integer | array $data, boolean $relationDel = false ) : integer
$data integer | array 数据 可以使用关联对象的主键
$relationDel boolean 是否同时删除关联表数据
Результат integer
    public function detach($data, $relationDel = false)
    {
        if (is_array($data)) {
            $id = $data;
        } elseif (is_numeric($data) || is_string($data)) {
            // 根据关联表主键直接写入中间表
            $id = $data;
        } elseif ($data instanceof Model) {
            // 根据关联表主键直接写入中间表
            $relationFk = $data->getPk();
            $id = $data->{$relationFk};
        }
        // 删除中间表数据
        $pk = $this->parent->getPk();
        $pivot[$this->localKey] = $this->parent->{$pk};
        if (isset($id)) {
            $pivot[$this->foreignKey] = is_array($id) ? ['in', $id] : $id;
        }
        $query = clone $this->parent->db();
        $query->table($this->middle)->where($pivot)->delete();
        // 删除关联表数据
        if (isset($id) && $relationDel) {
            $model = $this->model;
            $model::destroy($id);
        }
    }