Laravel 分离不适用于 belongsToMany

Laravel detach not working on belongsToMany

我有这个型号:Company
其中有一个关系:$this->belongsToMany('App\CallList', 'call_list_companies', 'company_id', 'call_list_id')

反之亦然:CallList
关系:$this->belongsToMany('App\Company', 'call_list_companies', 'call_list_id', 'company_id')

我可以将 Company 附加到 CallList
但是我无法从 CallList

中分离出 Company

这是为什么?

我用于分离公司的代码:
$company->call_lists()->detach($call_list);

我也试过另一种方式:
$call_list->companies()->detach($company);

当我这样做时它只是returns null。 我检查了公司和呼叫列表都存在,并且数据库中两者之间存在关系。

有人知道我做错了什么吗? 我也没有收到任何错误或任何东西。

如果值得一提,我还使用了关系的枢轴 table。

将关系查询过滤为仅具有匹配 ID 的呼叫列表,然后呼叫 detach()

尝试:

$company->call_lists()->where('id', $call_list->id)->detach();

我遇到过类似或相同的问题,并且在过去 2 年中遇到过两次。

我发现该关系使用了软删除并导致了这个问题。

我的关系 belongsToMany 使用 Pivot class.

use Illuminate\Database\Eloquent\Relations\Pivot;
use Illuminate\Database\Eloquent\SoftDeletes;

class EntityUser extends Pivot
{
   use SoftDeletes; // it makes the problem

   // some code
}

table 有列 deleted_at。但是问题是SoftDeletesclass.

当我运行 $user->entities()->detach($entity) 它返回1 这意味着一条记录被触摸或删除,但table 和实际结果没有变化。

我删除了 SoftDeletes 并且成功了。我还从 table.

中删除了该列

解决方案