如何将数组作为 Laravel 查询生成器的 SELECT 参数传递

Posted

技术标签:

【中文标题】如何将数组作为 Laravel 查询生成器的 SELECT 参数传递【英文标题】:How to pass array as SELECT params for Laravel Query Builder 【发布时间】:2020-05-02 20:37:07 【问题描述】:

如果我有一个 AJAX 调用返回一个名为 $selectArray 的数组,即 [foo,bar,foobar],如何在 Laravel 查询构建器中使用它以便对其进行清理?目前,我有

// Sanitizing Input
// $acceptableSelects is an array of columns in a table. Checks if there are any elements in $selectArray that is invalid
// If the check fails, it return the default array
$sanSelectArray = !array_diff($selectArray, array_keys($accetableSelects)) && count($selectArray) < 8 ? $selectArray : [foo,foo2,foo3]

foreach($sanSelectArray as $ele)
    $query->addSelect('table.' . $ele); // Required since I have a LEFT JOIN

这似乎非常不直观。在没有多个 addSelect() 方法的情况下,有更好的方法来清理输入或将 Array 作为 SELECT 传递,但我找不到任何方法。

【问题讨论】:

【参考方案1】:

您可以将数组传递给 addSelect() 方法。 例如

$query->addSelect(['my', 'array', 'of', 'columns']);

Laravel query builder test

【讨论】:

以上是关于如何将数组作为 Laravel 查询生成器的 SELECT 参数传递的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.2 查询生成器作为单个数组(不是 2D 或 3D)

如何从原始查询中检索结果集作为数组而不是 Laravel 3 中的对象

Laravel:如何优化多个查询

Laravel 删除查询生成器

我如何将 SQL 原始查询重写为 Laravel 查询生成器

Laravel 查询生成器返回对象或数组?