在 Laravel 中软删除后更新隐藏值

Update hidden value after soft deleting in 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, 'CodPessoa', '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;

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

class Pessoa extends Model
{
    // use SoftDeletes;

    protected $table = "pessoa";
    protected $primaryKey = "CodPessoa";
    public $incrementing = false;
    protected $keyType = 'string';
    protected $connection = "diana";

    public $hidden = ['created_at', 'updated_at', 'EXCLUIDO', 'LastSend'];
    public $fillable = ['email', 'TelRes', 'TelCel'];

    public function endereco()
    {
        return $this->hasOne('App\Endereco', 'CodEndereco', 'CodEndereco');
    }

    public function pessoafisica()
    {
        return $this->hasOne('App\PessoaFisica', 'CodPessoaFisica', 'CodPessoa');
    }

    public function pessoajuridica()
    {
        return $this->hasOne('App\PessoaJuridica', 'CodPessoaJuridica', 'CodPessoa');
    }

}

PessoaJuridicaEndereco 模型与 Pessoa 模型几乎相同。

当我软删除 Agroindustria 时,deleted_at 列更新成功,但我正在努力更新 EXCLUIDO 在我的其他模型中,列值从 0 到 1。 这是我在 AgroindustriaController 中创建的删除函数:

public function deletar (Request $request)
{
    try {
        $Agroindustria = Agroindustria::where('CodAgroindustria', $request['CodAgroindustria']);
        $Agroindustria->delete();

        $Pessoa = Pessoa::findOrFail($request['CodPessoa']);
        if ($Agroindustria->delete()) {
            DB::table('Pessoa')->where('CodPessoa', $Pessoa->CodPessoa)
                ->update(array('EXCLUIDO' => 1));
        }

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

尝试中的第二行

$Agroindustria->delete();

这样写这一行

$dlt = $Agroindustria->delete();

然后在你的 if 条件中把这个变量 $dlt 像这样

if ($dlt) {
        DB::table('Pessoa')->where('CodPessoa', $Pessoa->CodPessoa)
            ->update(array('EXCLUIDO' => 1));
    }

通过以下方式解决:

$Agroindustria = Agroindustria::where('CodAgroindustria', $request['CodAgroindustria']);
$dlt = $Agroindustria->delete();

if ($dlt) {
    Pessoa::where('CodPessoa', $request['CodPessoa'])
        ->update(array('EXCLUIDO' => 1));
    PessoaJuridica::where('CodPessoaJuridica', $request['CodPessoaJuridica'])
    ->update(array('EXCLUIDO' => 1));
    Endereco::where('CodEndereco', $request['CodEndereco'])
    ->update(array('EXCLUIDO' => 1));
}

谢谢大家!