问题描述
我有四个表:
- 农业工业
- 佩索阿
- 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));
}
谢谢大家!