在删除级联laravel

时间:2017-11-09 05:11:00

标签: mysql laravel foreign-keys cascading-deletes

早上好,

我将外键设置为laravel 5中的删除级联和几个表中的mysql,其中员工的存在取决于他出生的国家的存在。

$table->foreign('id_estado_municipio')
              ->references('id_estado_municipio')
              ->on('cat_municipios')
              ->onDelete('cascade')
              ->onUpdate('cascade'); 

问题是,当我删除国家/地区时,必须与其一起删除的员工将从数据库中删除,但员工的记录会继续显示在索引视图中。

尝试在配置文件中将引擎设置为InnoDB,模型观察者删除依赖者,但仍然无法弄清楚如何使其工作。

希望有人可以提供一些帮助。非常感谢它。

在这里,您是我的模型和模型控制器

class Municipio extends Model
{
    //
    protected $table = 'cat_municipios';
    protected $primaryKey = 'id_estado_municipio';
    ...

    public function trabajadores()
    {
        return $this->hasMany(Trabajador::class,'id_trabajador');
    }

    protected static function boot() {
        parent::boot();
        static::deleting(function($municipio) {
              // delete related stuff ;)
              $municipio -> trabajadores() -> delete();
        });
    }



     class MunicipioController extends Controller
     {
           ...

           public function destroy($id)
           {
                 //
                 $municipio = Municipio::findOrFail($id);
                 $municipio -> trabajadores() -> delete();
                 $destruido = Municipio::destroy($id);
                 if($destruido)
                      return redirect()->route('Municipio.index')->with('info','Municipio eliminado con éxito.');
                 else
                      return redirect()->route('Municipio.index')->with('error','Imposible borrar Municipio.');
            }
      }

////////////////////////////////////////
class Trabajador extends Model
{
//
    protected $table = 'trabajadors';
    protected $primaryKey = 'id_trabajador';
...

    public function municipio()
    {
        return $this->belongsTo(Municipio::class,'id_estado_municipio');
    }
    ...
}

 class TrabajadorController extends Controller
 {

      public function index()
      {
          //
          $criterio = \Request::get('search'); //<-- we use global request to get the param of URI

          $estadosciviles = EstadoCivil::orderBy('id_estado_civil')->paginate(50);
    $estados = Estado::orderBy('id_estado') -> paginate(50);
    $municipios = Municipio::orderBy('id_estado_municipio')->paginate();
    $religiones = Religion::orderBy('id_religion')->paginate();

          $trabajadores = Trabajador::where('nombre', 'like', '%'.$criterio.'%')
    ->orwhere('id_trabajador',$criterio)
    ->orwhere('a_paterno',$criterio)
    ->orwhere('a_materno',$criterio)
    ->orwhere('curp',$criterio)
    ->orwhere('rfc',$criterio)
    ->orwhere('seguro_social',$criterio)
    ->sortable()
    ->orderBy('id_trabajador')
    ->orderBy('nombre')
    ->paginate();
    return view('Trabajador.index', array('trabajadores' => $trabajadores,'estadosciviles' => $estadosciviles,'estados' => $estados,'municipios' => $municipios,'religiones' => $religiones));
    }
    ...
   }

0 个答案:

没有答案