将控制器属性共享给模型方法-Laravel

时间:2019-04-11 19:45:03

标签: php laravel eloquent

我有一个问题-是否可以在laravel中从控制器传递或共享属性到模型。这是“问题”的一些代码示例。

基本上,我有一个模型方法,可以用给定的货币获取产品价格。

class Product extends Model
{
    public function getPrice()
        {
            return number_format($this->price_retail / $this->sessionHelper->getCurrentCurrency()->conversion_rate, 2);
        }
}

sessionHelper是一个单独的类,提供有关当前货币的信息。我想删除此部分并使用控制器中的属性

在项目中,我的productController可以访问从baseController扩展的全局变量:

class ProductController extends BaseController
{
    protected $product;

    public function __construct(Product $product)
    {
        parent::__construct();
        $this->product = $product;
        $this->currentCurrency  //gives current currency info which i need in model
    }
   //test function
   public function showFirstProductPrice(){
       $this->product->first()->getPrice();
   }
}

我可以做类似通过函数传递变量的操作:

$this->product->first()->getPrice($Variable);

但是鉴于每次我都需要传递$ variable。当前,我直接调用模型方法,该方法正在调用货币换算率的助手,并且它正在工作,但是我想有更好的方法可以做到这一点。

有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您当然可以传递变量。

    class Product extends Model
   {
    public function getPrice($variable)
        {
            return number_format($this->price_retail /$variable, 2);
        }
    }

您可以在控制器中执行此操作

    class ProductController extends BaseController
{
    protected $product;

    public function __construct(Product $product)
    {
        parent::__construct();
        $this->product = $product;
        $this->currentCurrency  //gives current currency info which i need in model
    }
   //test function
   public function showFirstProductPrice(){
       $this->product->first()->getPrice($variable);
   }
}