我是laravel的新手,我运行一个查询并从数据库中获取行,我希望在将它们放入视图之前编辑这些行的列。 所以这是我的代码片段:
$callPlans = CustomerCallPlan::whereNotNull('id');
foreach ($callPlans->get() as $callPlan) {
dd($callPlan);
}
输出截图:
我需要将所有'x'字符替换为numbertemplate
列的“ - ”..
答案 0 :(得分:8)
如果要始终为模型执行此转换,只需将以下访问器方法添加到模型类中:
public function getNumbertemplateAttribute() {
return str_replace('x', '-', $this->attributes['numbertemplate']);
}
现在每次访问 $ customerCallPlan-> numbertemplate 时,您都会获得转换后的字符串。
否则只需在获取数据时转换列:
$plans = $callPlans->get()->map(function($plan) {
$plan->numbertemplate = str_replace('x', '-', $plan->numbertemplate);
return $plan;
});
答案 1 :(得分:3)
您可以执行以下操作:
from logging import LogRecord
from logging.handlers import SysLogHandler
class MultilineSysLogHandler(SysLogHandler):
def emit(self, record):
if '\n' in record.msg:
record_args = [record.args] if isinstance(record.args, dict) else record.args
for single_line in record.msg.split('\n'):
single_line_record = LogRecord(
name=record.name,
level=record.levelno,
pathname=record.pathname,
msg=single_line,
args=record_args,
exc_info=record.exc_info,
func=record.funcName
)
super(MultilineSysLogHandler, self).emit(single_line_record)
else:
super(MultilineSysLogHandler, self).emit(record)
希望这有用。
答案 2 :(得分:2)
您可以使用update()
和str_replace()
:
$callPlans = CustomerCallPlan::whereNotNull('id');
foreach ($callPlans->get() as $callPlan) {
$callPlan->update(["numbertemplate"=>str_replace("x", "-", $callPlan->numbertemplate]);
}
希望这有帮助。
答案 3 :(得分:0)
默认情况下,php在将变量作为参数传递给函数时会创建变量的副本。您可以通过在参数前面加上一个&符号来覆盖此行为,该符号将指向原始变量的指针传递给该函数。
我们可以在集合内部的foreach循环中使用它来修改原始项目,如下所示:
$callPlans->each(function(&$plan) {
$plan->numbertemplate = 'xyz';
});