0

我尝试在我的数据库中保存一个变形关系,但是当我尝试保存它时,我在每个用于该关系的表中都有两个条目。

这是我的客户班

class Client extends Model
{
    protected $guarded = [];

    public function clientelle(){
        return $this->morphTo();
    }

}

我的特别班

class Particulier extends Model
{
    protected $guarded = [];

    public function client(){
        return $this->morphOne(Client::class,'clientelle');
    }
}

所以当我尝试这样保存时:

$particulier = new Particulier();
$particulier->nom = $request->nom;
$particulier->prenom = $request->prenom;
$particulier->save();

$particulier->client()->create(['telephone'=>$request->telephone,'adresse'=>$request->adresse,'email'=>$request->email]);

我的数据库保存两个相同的记录。这是我的问题。

所以我尝试了不同的事情来避免它,但我每次都有错误

  • 删除$particulier->save();但 SQL 错误 ID 不存在
  • 用 save([...]) 或 sync([...]) 替换 create([...]) 但不起作用

先感谢您

4

1 回答 1

0

所以我终于找到了一个最糟糕的解决方案......

在您的控制器中添加 int var 并将其初始化为 0 ,如下所示:

Private $checkDouble=0;

在要保存关系的地方创建 if 块并像这样保存所有模型:

if($this->checkDouble==0) {
   $this->checkDouble = $this->checkDouble + 1; //Increase your var value 

   $particulier = Particulier::create(['nom' => $request->nom, 'prenom' => $request->prenom]);
   $particulier->client()->create(['telephone' => $request->telephone, 'adresse' => $request->adresse, 'email' => $request->email]);
}

不再有重复数据

我知道确实是最糟糕的解决方案,但我没有看到任何最好的解决方案^^

于 2020-02-10T10:04:32.080 回答