在Eloquent中的IN声明

Vuk*_*vić 2 mysql laravel eloquent

我正在尝试在Eloquent查询中执行IN语句.我试过这个:

$id = urldecode($id);

$news = News::whereHas('newsCategories', function($q) use($id)
{
    $q->where('category_id', 'IN', '('.$id.')')->orderBy('created_at', 'desc');
})->get();
Run Code Online (Sandbox Code Playgroud)

但我得到空洞的结果.

当我转IN=,并通过数字而不是阵列我得到的结果.我做错什么了吗?

这样可行:

$id = 2;

$news = News::whereHas('newsCategories', function($q) use($id)
{
    $q->where('category_id', '=', $id)->orderBy('created_at', 'desc');
})->get();
Run Code Online (Sandbox Code Playgroud)

mst*_*rdy 7

您想要whereIn检查您的ID数组...

$news = News::whereHas('newsCategories', function($q) use($array_of_ids)
{
    $q->whereIn('category_id', $array_of_ids)
      ->orderBy('created_at', 'desc');
})->get();
Run Code Online (Sandbox Code Playgroud)

只要确保你传递的是真正的数组:)