美好的一天,
我正在尝试将变量发送到要在所有函数中使用的模型,而不将其作为参数传递给所有函数, 这就是我所做的,但它不起作用,任何人都可以找出问题吗?
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();
}
}
答案 0 :(得分:1)
我认为在构造函数中传递值在模型的情况下不起作用。你可以做的是创建一个setter方法。
function setValue($val){
$this->value = $value;
}
现在您可以使用$ this->值以其他方式访问它。
答案 1 :(得分:0)
你应该将__constructor重命名为__construct,它应该可以工作。
答案 2 :(得分:-1)
如果您的Something
模型扩展Eloquent
,则必须覆盖静态类create()
,如下所示:
public static function create(array $attributes)
{
$this = parent::create($data);
$this->value = $attributes['value'];
return $this;
}
并称之为:
$somethingObj = \App\Something::create(['user_value' => $user_value ]);