我正在尝试对db表中列的条目执行字符串替换。到目前为止,我已到达此处:
$misa = DB::table('mis')->pluck('name');
for($i=0;;$i++)
{
$misa[$i] = substr_replace("$misa[$i]","",-3);
}
我得到的错误是“Undefined offset:443”。
P.S。我不是一个成熟的程序员。只是尝试为我的业务开发一些简单的程序。谢谢。
答案 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操作使这个过程更快(在大型数据集中会很明显 - 相信我)。
干杯!