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

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

附加关联的一个中间表数据
public attach ( mixed $data, array $pivot = [] ) : integer
$data mixed 数据 可以使用数组、关联模型对象 或者 关联对象的主键
$pivot array 中间表额外数据
Результат integer
    public function attach($data, $pivot = [])
    {
        if (is_array($data)) {
            // 保存关联表数据
            $model = new $this->model();
            $model->save($data);
            $id = $model->getLastInsID();
        } elseif (is_numeric($data) || is_string($data)) {
            // 根据关联表主键直接写入中间表
            $id = $data;
        } elseif ($data instanceof Model) {
            // 根据关联表主键直接写入中间表
            $relationFk = $data->getPk();
            $id = $data->{$relationFk};
        }
        if ($id) {
            // 保存中间表数据
            $pk = $this->parent->getPk();
            $pivot[$this->localKey] = $this->parent->{$pk};
            $pivot[$this->foreignKey] = $id;
            $query = clone $this->parent->db();
            return $query->table($this->middle)->insert($pivot);
        } else {
            throw new Exception('miss relation data');
        }
    }