Laravel: 为什么这会导致错误 - 调用未定义的方法?

Laravel: why does this cause error - call to undefined method?

为什么在模板中调用带括号的方法会出错,而没有则不会?那我怎么传递参数呢?

错误:

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";
}
...

如果您将 Product.php 的实例(应该是数据库中产品 table 的模型)分配给 blade 变量,并且您的产品 table 有一个名为 'test' 的列,然后您只是从模型中打印该值,而 Product.php 的实例中没有 test() 方法。您可以只检索 test 属性的值。

如果您想将参数传递给模型中的函数,请为您的函数使用不同的名称。您不能将参数传递给 Laravel.

中的 accessors

getTestAttributeaccessor,所以它不是一个真正的函数。它展示了如何获取模型的属性。

这就是您应该使用 getTestAttribute 方法的原因:

$product->test