Как удалить строку, не затрагивая справочную таблицу, используя модель Elequent в Laravel 6? - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть две модели: Родитель и Ребенок.

Родительская модель имеет: -

public function children(){
    return $this->hasMany('App\Child');
}

Дочерняя модель имеет: -

public function parent(){
    return $this->belongsTo('App\Parent');
}

таблица родителей имеет следующие данные

id             name            data
1              ABC             ABCDEF
2              EFG             HIJKLM

дочерняя таблица содержит следующие данные

id             name            data                parent_id
1              123             123456                 1
2              456             789101112              1

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

Я пытался: -

$child=Child::find($id);
$child->delete();

и

$child=Child::find($id);
$child->parent()->delete();
$child->delete();

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

миграции: - Родительская миграция: -

Schema::create('parents', function (Blueprint $table) {
     $table->id();
     $table->string('name')->unique();
     $table->longText('data');
});

Дочерняя миграция: -

Schema::create('children', function (Blueprint $table) {
     $table->id();
     $table->string('name');
     $table->longText('data');
     $table->unsignedBigInteger('parent_id')->index();
});

Schema::table('children', function (Blueprint $table) {
     $table->foreign('parent_id')->references('id')->on('parents');
});
...