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:
I need to replace all the 'x' characters with '-' of numbertemplate
column..
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;
});
By default php creates a copy of a variable when passing it to a function as a parameter. You can override this behaviour by prefixing the parameter with an ampersand, which will pass a pointer to the original variable to the function instead.
We can use this in a foreach loop inside the collection to modify the original item like so:
$callPlans->each(function(&$plan) {
$plan->numbertemplate = 'xyz';
});
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With