实现一下wherehasin
时间: 2024-03-11 10:48:26 浏览: 11
实现`wherehasin`方法可以参考dcat/laravel-wherehasin的实现方式,具体代码如下:
```php
public function whereHasIn($relation, $column, $values, $boolean = 'and', $not = false)
{
$this->query->whereHas($relation, function ($query) use ($column, $values, $not) {
$query->whereIn($column, $values, 'and', $not);
}, $boolean);
return $this->query;
}
public function orWhereHasIn($relation, $column, $values)
{
return $this->whereHasIn($relation, $column, $values, 'or');
}
public function whereHasNotIn($relation, $column, $values, $boolean = 'and')
{
return $this->whereHasIn($relation, $column, $values, $boolean, true);
}
public function orWhereHasNotIn($relation, $column, $values)
{
return $this->whereHasIn($relation, $column, $values, 'or', true);
}
```
`whereHasIn`方法接收四个参数,分别是关系名称、列名、值数组以及连接类型和是否取反的标识,其中关系名称和值数组是必填的,列名默认为主键列,连接类型和是否取反的标识默认为`and`和`false`。
`orWhereHasIn`方法是`whereHasIn`方法的`or`版本,用于添加一个关系查询的OR IN条件。
`whereHasNotIn`方法是`whereHasIn`方法的NOT IN版本,用于添加一个关系查询的NOT IN条件。
`orWhereHasNotIn`方法是`whereHasNotIn`方法的`or`版本,用于添加一个关系查询的OR NOT IN条件。