我有一個Task
類。此表中的每個記錄可以有一個或多個孩子,可以是另一個任務的一個或多個父母。Laravel刪除BelongsToMany relationship
表任務
id | name
表tasks_links
parent_id | child_id
任務模型
<?php
namespace App;
class Task extends Model
{
public function childs()
{
return $this->belongsToMany(Task::class, 'tasks_links', 'parent_id','child_id');
}
public function parents()
{
return $this->belongsToMany(Task::class, 'tasks_links' , 'child_id' , 'parent_id');
}
}
在我的控制器和視圖 我可以使用像
Task::find($id)->parents(); //Return an array
當我刪除任務的關係,我也想刪除的鏈接與其他相關任務
所以下面的工作:
\DB::table('tasks_links')->where('parent_id' , $task->id)->delete();
\DB::table('tasks_links')->where('child_id' , $task->id)->delete();
但我下面不working
foreach ($task->parents() as $parent) {
$parent->delete();
}
有什麼辦法可以刪除links
by usi函數parents
和childs
而不是直接在數據庫中搜索?
不幸的是,它不工作: -/ – Raccoon
$ task-> childs() - > detach() –
太棒了!感謝您編輯您的答案 – Raccoon