У меня есть две модели: Родитель и Ребенок.
Родительская модель имеет: -
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');
});