Sql Laravel查询生成器:其中pivot不在

Sql Laravel查询生成器:其中pivot不在,sql,laravel,pivot,Sql,Laravel,Pivot,其中提到了pivotin(在“通过中间表列筛选关系”下),但我找不到有关相反函数的任何信息 由于wherePivotIn已经存在,但没有wherePivotNOTIn,我编辑了这个文件:vendor/laravel/framework/src/illighte/Database/Eloquant/Relations/belongtomany.php 并增加了这个功能 public function wherePivotNotIn($column, $values, $boolean = 'and

其中提到了pivotin
(在“通过中间表列筛选关系”下),但我找不到有关相反函数的任何信息

由于
wherePivotIn
已经存在,但没有
wherePivotNOTIn
,我编辑了这个文件:
vendor/laravel/framework/src/illighte/Database/Eloquant/Relations/belongtomany.php

并增加了这个功能

public function wherePivotNotIn($column, $values, $boolean = 'and', $not = false)
    {
        $this->pivotWhereIns[] = func_get_args();

        return $this->whereNotIn($this->table.'.'.$column, $values, $boolean, $not);
    }
现在,
wherePivotNotIn
存在并正在工作。但我的问题是:

更新此文件安全吗?
在更新的情况下,我想我会丢失这个…

永远不要编辑供应商目录中的内容。创建您自己的方法以满足您的需要,以防它不存在

在您的情况下,您可以定义

它看起来像:

class Task extends Model
{

    public function scopeWherePivotNotIn($query)
    {
         /**/            
    }

}

$tasks = Task::wherePivotNotIn()->get();

是的,不要更新没有编号的供应商文件。相反,创建一个扩展
belongToMany
的类,并将您的实现放在其中。一旦文件更新,您将丢失所做的更改。

经过一点修改后,我发现
方法中的
方法接受两个以上的参数

我们只需要像这样使用“wherePivotNotIn”


无需声明新类或使用范围

我应该在哪里创建这个新类,以及默认情况下如何使用它而不是旧类?在新版本中,值
NotIn
只是一个真实的值,这意味着它可以是“true”或任何其他计算结果为
true
的值,因此可以将其重写为<代码>->wherePivotIn($column,$value,'and',true)
->wherePivotIn($column,$value,'and','NotIn')