【问题标题】:How to delete a row from pivot table如何从数据透视表中删除一行
【发布时间】:2020-11-18 22:28:01
【问题描述】:

我想删除数据透视表中的一行,但没有任何变化,所以有人可以帮我解决这个问题吗?我有这样的数据透视表:

public function up()
    {
        Schema::create('group_list', function(Blueprint $table)
        {
            $table->integer('group_id');
            $table->integer('id');
            $table->primary(['group_id','id']);
        });
    }

我的第一个模型:

class AddressBook extends Model
{
    public function addressbookgroups(){
        
        return $this->belongsToMany(AddressBookGroup::class, 'group_list', 'id', 'group_id');
    }
...
}

我的第二个模型:

class AddressBookGroup extends Model
{
      
    public function addressbooks(){
        return $this->belongsToMany(AddressBook::class, 'group_list', 'group_id','id');
    }
  
}

在索引刀片中,我想从地址簿刀片中删除一行:

 ....
  <form action="{{ route('group-list.destroy', $addressbook->id) }}" method="POST">
     @csrf
     @method('delete')
    <button type="submit" onclick="return confirm('Are you sure you want to delete this?')"
       class="btn btn-danger">Delete</button>
   </form>

最后是我的删除方法:

class AddressBookGroupListController extends Controller
{
   public function destroy(AddressBook $address_book)
    {
        $address_book->delete();
        return redirect('address-book-group-list');
    }
}

【问题讨论】:

标签: laravel eloquent pivot-table


【解决方案1】:

如果你想从数据透视表中删除一个条目,你可以借助关系来完成。

$address_book = AddressBook::find($id);

从由上述$address_bookaddress_book_group 组合形成的数据透视表中删除条目,ID 为$address_book_group_id

$address_book->addressBookGroups->detach($address_book_group_id);

删除与$address_book关联的所有数据透视表条目

$address_book->addressBookGroups->detach();

【讨论】:

  • 不,这只是价值。这个$address_book_group 我的意思是这是数据透视表中group_id 列的值
  • detach() 中,您将在数据透视表中使用的另一个表的键的值作为外键,在您的情况下为“group_id”
  • I want to delete a row in pivot table(来自您的问题)您想从数据透视表中删除一个条目,对吧?正如我在回答中提到的,可以使用 detach 从数据透视表中删除。无论如何,如果您想删除 AddressBook 实例,可能在数据透视表中可能存在正在使用它的条目,因此您需要先删除它们,然后再删除该 AddressBook 实例。
  • 如果您可以在帖子中包含示例和预期结果,那就太好了。这样就更容易理解问题的要求。在您的示例中,请尝试在您的数据透视表中添加条目。
猜你喜欢
  • 1970-01-01
  • 2018-07-26
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
相关资源
最近更新 更多