Laravel 6:保存多态关系的重复数据库条目



我尝试在我的数据库中保存一个变形关系,但是当我尝试保存它时,我必须在每个表中为关系使用拖曳条目。

这是我的客户端类

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 不存在
  • 将 create([...]( 替换为 save([...]( 或 sync([...](,但不起作用

提前谢谢你

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

在您的控制器中添加 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]);
}

不再有重复的数据

我知道这真的是最糟糕的解决方案,但我看不到任何最好的解决方案^^

最新更新