使用WhereNotIn变量

时间:2018-02-08 02:41:09

标签: laravel eloquent

我用

得到了一个变量
  

2,3

...我通过POST传递给我的函数:

        //echo $_POST['sponsored_inserts']; returns 2,3
        $sponsored_link = Link::where('status', '=', 1)
            ->where('sponsored', 1)
            ->with('page', 'tag')
            ->inRandomOrder()
            ->WhereNotIn('id', [$_POST['sponsored_inserts']])
            ->first();

WhereNotIn只从搜索中删除了id 2 ...但是,如果我把:

    $sponsored_link = Link::where('status', '=', 1)
        ->where('sponsored', 1)
        ->with('page', 'tag')
        ->inRandomOrder()
        ->WhereNotIn('id', [$_POST['sponsored_inserts'],3])
        ->first();

作品...

发生了什么事?

1 个答案:

答案 0 :(得分:0)

因为你的变量是一个字符串类型,如果像 2,3 用逗号分隔并不意味着它是一个数组。

WhereNotIn()函数接受一个数组作为第二个参数,因此$_POST['sponsored_inserts'] = [2,3]是可接受的

你需要这样做:

$sponsoredInserts = explode(',',$_POST['sponsored_inserts']);

并在您的查询中

->WhereNotIn('id',$sponsoredInserts);