如何在db表列上执行字符串函数?

时间:2018-02-05 11:07:30

标签: laravel

我正在尝试对db表中列的条目执行字符串替换。到目前为止,我已到达此处:

$misa = DB::table('mis')->pluck('name');
for($i=0;;$i++)
{
    $misa[$i] = substr_replace("$misa[$i]","",-3);
}  

我得到的错误是“Undefined offset:443”。

P.S。我不是一个成熟的程序员。只是尝试为我的业务开发一些简单的程序。谢谢。

2 个答案:

答案 0 :(得分:2)

由于它是一个集合,使用transform()集合方法对其进行转换并避免此类错误。此外,您只需使用str_before()方法转换每个字符串:

$misa = DB::table('mis')->pluck('name');
$misa->transform(function($i) {
    return str_before($i, ':ut');
});

答案 1 :(得分:0)

有几种方法可以让这个查询更漂亮,更快! Laravel的优点在于我们既可以使用Eloquent进行漂亮查询,也可以使用Collections以用户友好的方式管理数据。所以,首先让我们清理查询。您可以使用DB :: Raw选择并在查询本身中执行所有字符串替换,如下所示:

$misa = DB::table('mis')->select(DB::raw("REPLACE(name, ':ut' , '') as name"));

现在,我们有一个只包含名称列的集合,您已删除':ut'在您的特定情况下,只需将其替换为MySQL查询本身内的空字符串。

惊喜!就是这样。不需要进一步的PHP操作使这个过程更快(在大型数据集中会很明显 - 相信我)。

干杯!