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

问题描述

我有四个表:

  • 农业工业
  • 佩索阿
  • PessoaJuridica
  • Endereco

。这是他们的模型:

农业工业

<?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;

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','EXCLUIDO','LastSend'];
    public $fillable = ['email','TelRes','TelCel'];

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

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

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

}

PessoaJuridica Endereco 模型与 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()]
        ]);
    }
}

解决方法

尝试第二行

RS

像这样写这行

$Agroindustria->delete();

在此之后,在您的if条件中将变量$ dlt像这样

$dlt = $Agroindustria->delete();
,

通过以下方式解决了该问题:

$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));
}

谢谢大家!

相关问答

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