2017-04-02 84 views
0

为什么在模板中使用括号调用方法会导致错误,但没有?那么我将如何传递一个参数呢?Laravel:为什么会导致错误 - 调用未定义的方法?

错误:

Call to undefined method Illuminate\Database\Query\Builder::test() 

index.blade.php

... 
<p class="product-price-old"><s>{{ $product->test("123") }}</s></p> 
... 

Product.php

... 
public function getTestAttribute($value) 
{ 
    return $value; 
} 
... 

但如果我做这样的事情,它工作正常:

index.blade.php

... 
<p class="product-price-old"><s>{{ $product->test }}</s></p> 
... 

Product.php

... 
public function getTestAttribute() 
{ 
    return "123"; 
} 
... 

回答

1

getTestAttributeaccessor,所以它不是一个真正的功能。它反映了你如何获得模型的属性。

这就是为什么getTestAttribute方法,你应该使用:

$product->test 
2

如果您分配Product.php的一个实例(这应该是一个产品表的数据库模型)来一个刀片变量,并且您的Product表中有一个名为'test'的列,那么您只需从模型中打印该值,而Product.php的实例中没有test()方法。您可以检索test属性的值。

如果要将参数传递给模型中的函数,请为函数使用不同的名称。您无法将参数传递给Laravel中的accessor

相关问题