CakePhp 3中无法识别模型的功能

时间:2018-10-01 10:29:56

标签: php cakephp model-view-controller cakephp-3.0 shopping-cart

我只是确定自己是否犯了任何错误。我正在尝试从其他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";
       }

    }

我需要做更多的事情吗?我发现这没有帮助我。所以请明智的人帮助我。谢谢:)

3 个答案:

答案 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";
  }
}

我希望这能帮助那些遇到同样问题的人。 谢谢