在Eloquent中的IN声明

时间:2014-07-31 21:56:10

标签: 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();

但我得到空洞的结果。

当我为IN切换=并传递数字而不是数组时,我会得到结果。我做错了吗?

这样可行:

$id = 2;

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

1 个答案:

答案 0 :(得分:7)

您希望{id} whereIn与您的ID数组进行检查...

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

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