Laravel:带有变量的whereIn

Posted

技术标签:

【中文标题】Laravel:带有变量的whereIn【英文标题】:Laravel: whereIn with variable 【发布时间】:2018-07-03 09:34:48 【问题描述】:

我正在尝试在变量 $sections 中收集属于发生在他们身上的部分的所有记录。但只有第 1 节的人接我。有什么建议吗?

$sections = '1,2,3';

$data = News::where('active', '1')
        ->whereIn('section_id', [$sections])
        ->get();

如果我将查询中的 $sections 替换为值,这是可行的,但如果我使用变量 $sections,它就不起作用了。

谢谢。

【问题讨论】:

【参考方案1】:

您的 $sections 变量是一个字符串。而且您将该字符串传递给数组,而不是字符串中的每个单独的数字。

例如:

$users = DB::table('users')
                ->whereIn('id', [1, 2, 3])
                ->get();

【讨论】:

【参考方案2】:

当你使用whereIn() 时,你必须传递一个数组而不是字符串:

$sections = explode(',', '1,2,3');

【讨论】:

他最好 $sections = [1,2,3]; @Amarnasan 这只是一个例子。我不认为 OP 对这些类别进行硬编码,而是从请求中将它们作为字符串或其他内容获取。 Amarnasan,我按照您之前指出的方式进行了尝试,但我只从第一部分得到了这些。 Alexey 的回答是正确的

以上是关于Laravel:带有变量的whereIn的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中使用带有变量的 create 方法

带有消息“未定义变量”的 Laravel Tinker ErrorException

带有变量的 Laravel 模型表名

在带有 Blade 的 Laravel 4 中看不到内容视图中的变量

将带有变量的闭包传递给 Laravel 查询构建器中的 where 方法

Laravel - 使用变量重定向到树枝页面