我在为此找到解决方案时遇到了一些麻烦。

Error: Call to a member function schema() on a non-object
File: /Cake/Model/Model.php
Line: 3627

在我的数据库中,有表文章主题标签以及表 Articles_hashtags 与外键article_id和hashtag_id的关联。.因此,我试图获取每篇文章具有主题标签的信息。

我的文章模型
class Article extends AppModel {
 public $hasAndBelongsToMany = array(
    'Hashtag' =>
        array(
            'className' => 'Hashtag',
            'joinTable' => 'articles_hashtags',
            'foreignKey' => 'article_id',
            'associationForeignKey' => 'hashtag_id',
            'unique' => true,
            'conditions' => '',
            'fields' => '',
            'order' => '',
            'limit' => '',
            'offset' => '',
            'finderQuery' => '',
            'with' => ''
               )
            );
          }

文章控制者
class ArticleController extends AppController {
var $name = 'Article';
 public $helpers = array("Html", "Form");
    public function index()
    {
    $this->set("posts", $this->Article->find("all"));

    }
}

谢谢你的帮助!!

此外:
如果我将调试器sql日志中生成的sql select查询放入我的sql数据库中,我会得到正确的结果..所以我猜 Controller 有问题吗?

最佳答案

我遇到了同样的问题,因此将$hasAndBelongsToMany简化为可能的最小键。

问题是您在$hasAndBelongsToMany数组上使用了'with'键。删除它或将其设置为“articles_hashtags”:

class Article extends AppModel {
  public $hasAndBelongsToMany = array(
    'Hashtag' =>
        array(
            'className' => 'Hashtag',
            'joinTable' => 'articles_hashtags',
            'foreignKey' => 'article_id',
            'associationForeignKey' => 'hashtag_id',
            'unique' => true,
            'conditions' => '',
            'fields' => '',
            'order' => '',
            'limit' => '',
            'offset' => '',
            'finderQuery' => '',
            'with' => 'articles_hashtags'
        )
      );
   }

库模型代码正在尝试访问“带”键的值,该键为空,因此出现非对象错误。

From CakePHP docs,关于$hasAndBelongsToMany数组:

10-07 21:47