Laravel雄辩的查询:是否创建范围以检查值与静态值列表相交的列?

6za6bjd0  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(102)

我有一个有效值的静态列表,例如$valid = ['one','two']
和一个列(例如types),在我的模型中有多个值(转换为数组)。
我可以检查它们是否相交:array_intersect($model->types, $valid)
我可以创建一个只包含相交模型的scope吗?

8fsztsew

8fsztsew1#

我想你可以用orWhereJsonContains函数,类似这样:

public function scopeNameIt(Builder $query,$array): void //pass the array as a parameter to the scope
 {
   $query->where(function($query) use ($array)){
      foreach($array as $element){
         $query->orWhereJsonContains('types',element);
      }
   }
 }

你可以在文档中读到它
根据文档,您也可以将数组传递给whereJsonContains函数

public function scopeNameIt(Builder $query,$array): void //pass the array as a parameter to the scope
 {
   $query->WhereJsonContains('types',$array);
 }

相关问题