Laravel 6: дубликат записи базы данных при сохранении отношения полиморфизма - PullRequest
0 голосов
/ 03 февраля 2020

Я пытаюсь сохранить морфное отношение в моей базе данных, но когда я пытаюсь сохранить его, у меня есть буксировочная запись в каждом использовании таблицы для этого отношения.

вот мой класс клиента

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]);

В моей базе данных сохраняются два одинаковых файла записи. Вот моя проблема.

Поэтому я стараюсь использовать diffrente, чтобы избежать этого, но у меня возникает ошибка каждый раз

  • delete $particulier->save();, но SQL id ошибки не существует
  • заменить create ([...]) на save ([...]) или syn c ([...]), но не работает

Спасибо Вы заранее

1 Ответ

0 голосов
/ 10 февраля 2020

Итак, я наконец нашел худшее решение ...

В вашем контроллере добавьте int var и установите его в 0 следующим образом:

Private $checkDouble=0;

В месте, где вы хотите сохранить свой Отношение создать, если блок и вставить во всю вашу модель, сохранить, как это:

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

И больше никаких дублирующих данных

Я знаю, что это действительно худшее решение, но я не вижу лучшего решения ^^

...