Nice Day All,
I'm trying to send a variable to the model to be used in all the function without passing it as a parameter to all function, here is what I have do, but it doesn't work, anyone Can figure out the problem?
SomethingController.php
public function store(){
$user_value = \Request::input('value'); // get value from user
$somethingObj = new \App\Something(['user_value' => $user_value ]);
$somethingObj->doSomething();
}
Something.php
public $value;
public function __constructor($attributes){
$this->value = $attributes['user_value'];
}
public function doSomething(){
if($this->value){
// this is not working , $value not working also $this->$value didn't work too
doSomething();
}else{
doOtherThing();
}
}
I think passing a value in constructor doesnt work in case of Models. What you can do instead is to create a setter method.
function setValue($val){
$this->value = $value;
}
Now you can use $this->value to access it in other methods.
You should rename __constructor to __construct and it should work.
If your Something
model extends Eloquent
you must override static class create()
, like this:
public static function create(array $attributes)
{
$this = parent::create($data);
$this->value = $attributes['value'];
return $this;
}
And call it:
$somethingObj = \App\Something::create(['user_value' => $user_value ]);