我尝试在我的数据库中保存一个变形关系,但是当我尝试保存它时,我必须在每个表中为关系使用拖曳条目。
这是我的客户端类
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]);
}
不再有重复的数据
我知道这真的是最糟糕的解决方案,但我看不到任何最好的解决方案^^