在laravel模型中设置一个公共变量

时间:2015-12-09 08:03:05

标签: php oop laravel model structure

美好的一天,

我正在尝试将变量发送到要在所有函数中使用的模型,而不将其作为参数传递给所有函数, 这就是我所做的,但它不起作用,任何人都可以找出问题吗?

 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();
       }
  }

3 个答案:

答案 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 ]);