发生的是将技术(Servicio)的服务(Tecnico)更改为其他技术。我需要更新表调用Servicio_Tecnico中的更改。我不怎么做

Tecnico模型

class Tecnico extends Eloquent{
protected $table = 'Tecnico';
protected $primaryKey = 'idTecnico';
protected $hidden = array('Contrasena');
protected $fillable = array(
                            'idTecnico',
                            'Nombre',
                            'Apellido',
                            'Telefono',
                            'Contrasena',
                            'Foto',
                            );
public function servicios(){
    return $this->belongsToMany('Servicio', 'Servicio_Tecnico', 'Tecnico_idTecnico', 'Servicio_idServicio');
}
}


服务模型

class Servicio extends Eloquent{
protected $table = 'Servicio';
protected $primaryKey = 'idServicio';
protected $fillable = array(
                            'Direccion',
                            'RutaPDF',
                            'Completado',
                            'TipoUsuario',
                            'Zonal',
                            'RutaCliente',
                            'Prima'
                            );
public function tecnicos(){
    return $this->belongsToMany('Tecnico', 'Servicio_Tecnico', 'Servicio_idServicio', 'Tecnico_idTecnico');
}
public function materialUsado(){
    return $this->hasMany('MaterialUsado', 'Servicio_idServicio');
}
}


这是我尝试更改时的代码

    $idTecnico_old = Input::get('idTecnicoViejo');
    $idTecnico_new = Input::get('idTecnico');
    $idServicio = Input::get('idServicio');
    if($idTecnico_new != ''){

        $servicio = Servicio::find($idServicio);
        $tecnico = $servicio->tecnicos()->get();
        $tecnico = $tecnico->find($idTecnico_old);
        $tecnico->pivot->Tecnico_idTecnico = $idTecnico_new;
        $tecnico->pivot->save;

    }


请帮助

最佳答案

您想对数据透视表使用sync而不是save。

$servicio = Servicio::find($idServicio);
$servicio->tecnicos()->sync(array('Tecnico_idTecnico' => $idTecnico_new));
$servicio->update();

关于php - 如何在laravel中更新从N到N关系创建的表的外键?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24542258/

10-11 11:06