How to edit items in laravel collection

2020-06-23 02:33发布

I am new in laravel, I run a query and get rows from database and I want to edit a column of this rows before get them in view. So here is my code piece :

$callPlans = CustomerCallPlan::whereNotNull('id');

foreach ($callPlans->get() as $callPlan) {
    dd($callPlan);
}

And the output screenshot:

enter image description here

I need to replace all the 'x' characters with '-' of numbertemplate column..

3条回答
Rolldiameter
2楼-- · 2020-06-23 02:35

You could do the following:

$callPlans = CustomerCallPlan::whereNotNull('id')->get();

foreach ($callPlans as $callPlan) {
    $callPlan->numbertemplate = (whetever you need);
    $callPlan->save(); //save the changes
}

Hope this was helpful.

查看更多
家丑人穷心不美
3楼-- · 2020-06-23 02:36

If you want to do this transformations always for your model, you can just add the following accessor method to the model class:

public function getNumbertemplateAttribute() {
  return str_replace('x', '-', $this->attributes['numbertemplate']);
}

Now everytime you access $customerCallPlan->numbertemplate you will get the converted string.

Otherwise just convert the column when you fetch the data:

$plans = $callPlans->get()->map(function($plan) {
  $plan->numbertemplate = str_replace('x', '-', $plan->numbertemplate);
  return $plan;
});
查看更多
相关推荐>>
4楼-- · 2020-06-23 02:47

You could use update() and str_replace() :

$callPlans = CustomerCallPlan::whereNotNull('id');

foreach ($callPlans->get() as $callPlan) {
    $callPlan->update(["numbertemplate"=>str_replace("x", "-", $callPlan->numbertemplate]);
}

Hope this helps.

查看更多
登录 后发表回答