我只是确定自己是否犯了任何错误。我正在尝试从其他Controller(产品)访问Model(购物车)的功能。
我从一个论坛上了解到这一点,我认为这是正确的方法。但是我遇到这个错误
Unknown method addToCart
您能告诉我我在哪里犯错了吗?
ProductController:
public function initialize(){
parent::initialize();
$table = $this->loadModel('Cart');// this works fine
}
public function addit() {
$table->addToCart();
}
型号:
class CartTable extends Table{
public function addToCart(){
echo "hello from model";
}
}
我需要做更多的事情吗?我发现这没有帮助我。所以请明智的人帮助我。谢谢:)
答案 0 :(得分:1)
您必须按以下方式使用它。
Product.where(:id => self.id, lock_version: params[:lock_version]).update_all('price = 0, lock_version = lock_version + 1')
在cakephp 3中,您还可以通过TableRegistery建立模型。只需使用此即可。
public function initialize(){
parent::initialize();
$this->loadModel('Cart');// this works fine
}
public function addit() {
$this->Cart->addToCart();
}
在使用之前,将此行放在控制器的使用部分
use Cake\ORM\TableRegistry;
答案 1 :(得分:0)
您需要在该方法中加载模型,而无需将其分配给var。
public function initialize(){
parent::initialize();
}
public function addit() {
$this->loadModel('Cart');
$this->Cart->addToCart();
}
这应该可以使您正常运行。
答案 2 :(得分:0)
我也有同样的问题...
解决方案很简单,只需在您的模型类中添加此代码:
namespace App\Model\Table;
所以,你的模型将是这样的:
namespace App\Model\Table;
use Cake\ORM\Table;
class CartTable extends Table{
public function addToCart(){
echo "hello from model";
}
}
我希望这能帮助那些遇到同样问题的人。 谢谢