如何使用Laravel对多个表进行软删除?

问题描述

我正在尝试软删除四个关系表上的注册数据,但是它仅在前端(Vuetify)上有效。 我已经查看过Laravel文档和类似问题,但对我没有任何帮助。我真的是Laravel的新手。 这是我的模型:

<?PHP

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Agroindustria extends Model
{
    use SoftDeletes;

    protected $table = "agroindustria";
    protected $primaryKey = "CodAgroindustria";
    public $incrementing = false;
    protected $keyType = 'string';

    public $fillable = ['CodAgroindustria,Porte'];
    public $hidden = ['created_at','updated_at','deleted_at'];

    public function pessoa () {
        return $this->setConnection('diana')->hasOne(Pessoa::class,'CodPessoa','CodAgroindustria');
    }

    public function pessoajuridica()
    {
        return $this->setConnection('diana')->hasOne(PessoaJuridica::class,'CodEndereco');
    }

    public function endereco()
    {
        return $this->setConnection('diana')->hasOne(PessoaJuridica::class,'CodEndereco','CodEndereco');
    }

    public function estado(){
        return $this->setConnection('diana')->hasOne(Estado::class,'CodEstado','estado');
    }

    public function cidade(){
        return $this->setConnection('diana')->hasOne(Cidade::class,'CodCidade','cidade');
    }
}

这是我的控制器:

<?PHP

namespace App\Http\Controllers;

use Ramsey\Uuid\Uuid;
use Illuminate\Http\Request;
use Validator;

use App\Agroindustria;
use App\Endereco;
use App\Pessoa;
use App\PessoaJuridica;

class AgroindustriaController extends Controller
{
    public function getAll () {
        $user = auth()->user();
        if ($user->TipoUsuario !== 1) {
            return response()->json('Não autorizado',401);
        }

        $agroindustrias = Agroindustria::with([
            'pessoa' => function ($query) {
                $query->select('CodPessoa','email','TelRes');
            },'pessoa.pessoajuridica' => function ($query) {
                $query->select('CodPessoaJuridica','NomeFantasia','Cnpj');
            },'pessoa.endereco' => function ($query) {
                $query->select('CodEndereco','CodCidade');
            },'pessoa.endereco.cidade' => function ($query) {
                $query->select('CodCidade','Nome');
            },'pessoa.endereco.cidade.estado' => function ($query) {
                $query->select('CodEstado','Sigla');
            },])->get();

        return response()->json($agroindustrias);
    }

    public function criar (Request $request)
    {
        try {
            $rules = [
                'razaoSocial' => 'required','nomeFantasia' => 'required','cnpj' => 'required','email' => 'required','porte' => 'required','estado' => 'required','cidade' => 'required|min:2','logradouro' => 'required','cep' => 'required|size:10','telRes' => 'required',];

            $messages = [
                'razaoSocial.required' => "Razão Social não foi informada",'nomeFantasia.required' => "Nome Fantasia não foi informado",'cnpj.required' => "CNPJ não foi informado",'email.required' => "Email não foi informado",'porte.required' => "Porte não foi informado",'estado.required' => "Estado não foi informado",'cidade.min' => "Cidade não foi informada",'logradouro.required' => "Logradouro não foi informado",'cep.required' => "CEP não foi informado",'cep.size' => "CEP deve conter 8 dígitos",'telRes.required' => "Telefone Comercial não foi informado",];

            $validator = Validator::make($request->all(),$rules,$messages);

            if ($validator->fails()) {
                return response()->json([
                    'error' => true,'message' => $validator->errors()->all(),'status' => 422
                ]);
            }

            // $criarReg = array();
            $uuid = Uuid::uuid4();

            $agroindustria = new Agroindustria;
            $agroindustria->CodAgroindustria = $uuid;
            $agroindustria->Porte = $request['porte'];
            $agroindustria->save();

            $pessoa = new Pessoa;
            $pessoa->CodPessoa = $uuid;
            $pessoa->CodEndereco = $uuid;
            $pessoa->email = $request['email'];
            $pessoa->TelRes = preg_replace('/[^0-9]/','',$request['telRes']);
            $pessoa->TelCel = preg_replace('/[^0-9]/',$request['telCel']);
            $pessoa->save();

            $pessoaJuridica = new PessoaJuridica;
            $pessoaJuridica->CodPessoaJuridica = $uuid;
            $pessoaJuridica->Cnpj = $request['cnpj'];
            $pessoaJuridica->NomeFantasia = $request['nomeFantasia'];
            $pessoaJuridica->RazaoSocial = $request['razaoSocial'];
            $pessoaJuridica->save();

            $endereco = new Endereco;
            $endereco->CodEndereco = $uuid;
            $endereco->CodCidade = $request['cidade'];
            $endereco->Logradouro = $request['logradouro'];
            $endereco->Numero = $request['numero'];
            $endereco->Bairro = $request['bairro'];
            $endereco->Complemento = $request['complemento'];
            $endereco->Cep = preg_replace("/[^0-9]/","",$request['cep']);
            $endereco->save();

            return response()->json([
                'error' => false,'data' => [
                    'message' => 'Dados salvos com sucesso',//$criarReg
                    'CodAgroindustria' => $uuid
                ]
            ]);
        } catch (Exception $e) {
            return response()->json([
                'error' => true,'message' => [$e->getMessage()]
            ]);
        }
    }

    public function deletar (Request $request,$CodAgroindustria,$CodPessoa,$CodPessoaJuridica,$CodEndereco)
    {
        $response = array();
        $response = Agroindustria::find($CodAgroindustria)->delete();
        $response = Pessoa::find($CodPessoa)->delete();
        $response = PessoaJuridica::find($CodPessoaJuridica)->delete();
        $response = Endereco::find($CodEndereco)->delete();

        return response()->json($response,200);
    }

    public function atualizar ($request,$uuid)
    {
        try {
            $rules = [
                'razaoSocial' => 'required','status' => 422
                ]);
            }

            $attAgroindustria = Agroindustria::find($request['CodAgroindustria']);
            $attAgroindustria->CodAgroindustria = $uuid;
            $attAgroindustria->Porte = $request['porte'];
            $attAgroindustria->save();

            $attPessoa = Pessoa::find($request['CodPessoa']);
            $attPessoa->CodPessoa = $uuid;
            $attPessoa->CodEndereco = $uuid;
            $attPessoa->email = $request['email'];
            $attPessoa->TelRes = preg_replace('/[^0-9]/',$request['telRes']);
            $attPessoa->TelCel = preg_replace('/[^0-9]/',$request['telCel']);
            $attPessoa->save();

            $attPessoaJuridica = PessoaJuridica::find($request['CodPessoaJuridica']);
            $attPessoaJuridica->CodPessoaJuridica = $uuid;
            $attPessoaJuridica->Cnpj = $request['cnpj'];
            $attPessoaJuridica->NomeFantasia = $request['nomeFantasia'];
            $attPessoaJuridica->RazaoSocial = $request['razaoSocial'];
            $attPessoaJuridica->save();

            $attEndereco = Endereco::find($request['']);
            $attEndereco->CodEndereco = $uuid;
            $attEndereco->CodCidade = $request['cidade'];
            $attEndereco->Logradouro = $request['logradouro'];
            $attEndereco->Numero = $request['numero'];
            $attEndereco->Bairro = $request['bairro'];
            $attEndereco->Complemento = $request['complemento'];
            $attEndereco->Cep = preg_replace("/[^0-9]/",$request['cep']);
            $attEndereco->save();

            return response()->json([
                'error' => false,'data' => 'Dados atualizados com sucesso' //$attRepositories
            ]);

        } catch(Exception $e){
            return response()->json([
                'error' => true,'message' => [$e->getMessage()]

            ]);
        }
    }

}

这是我在Vuetify上的脚本:

<script>
  export default {
    data () {
      return {
        search: '',loading: true,headers: [
          { text: '',sortable: false,width: '80px',value: 'actions',align: 'left' },{ text: 'Nome',align: 'left',sortable: true,value: 'pessoa.pessoajuridica.NomeFantasia',width: 'auto' },{ align: 'left',text: 'CNPJ',value: 'pessoa.pessoajuridica.Cnpj',text: 'Porte',value: 'Porte',text: 'Telefone',value: 'pessoa.TelRes',text: 'Estado',value: 'pessoa.endereco.cidade.estado.Sigla',text: 'Cidade',value: 'pessoa.endereco.cidade.Nome',],agroindustrias: [],}
    },created () {
      // console.log(this.item)
      this.api.get('/agroindustria')
        .then(response => {
          this.agroindustrias = response.data
          console.log(this.agroindustrias)
          this.loading = false
        })
    },methods: {
      deleteItem (item) {
        const index = this.agroindustrias.indexOf(item)
        // console.log(this.agroindustrias[index].pessoa.CodEndereco)
        this.Swal.fire({
          title: 'Apagar Agroindústria',text: 'Você tem certeza que deseja remover esta Agroindústria?',icon: 'warning',showCancelButton: true,confirmButtonColor: '#4caf50',cancelButtonColor: '#ff5252',confirmButtonText: 'Sim,desejo removê-la!',}).then((result) => {
          if (result.value) {
            this.api.delete('/agroindustria/deletar',{
              params: {
                CodAgroindustria: this.agroindustrias[index].CodAgroindustria,CodEndereco: this.agroindustrias[index].pessoa.CodEndereco,CodPessoa: this.agroindustrias[index].pessoa.CodPessoa,CodPessoaJuridica: this.agroindustrias[index].pessoa.pessoajuridica.CodPessoaJuridica,},})
            this.agroindustrias.splice(index,1)
            this.Swal.fire(
              'Removido!','Esta agroindustria foi removida com sucesso!','success',)
          } else {
            this.Swal.fire(
              'Erro','Esta agroindustria não pode ser removida!','error',)
          }
        })
      },}
</script>

预先感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...