代码之家  ›  专栏  ›  技术社区  ›  GreyRoofPigeon

Cakephp错误:未在项目上定义图像关联

  •  0
  • GreyRoofPigeon  · 技术社区  · 6 年前

    src/Model/Table/ImagesTable.php :

    public function initialize(array $config)
    {
        ...
        $this->belongsToMany('ProjectsManager.Projects', [
            'className' => 'ProjectsManager.Projects',
            'foreignKey' => 'image_id',
            'targetForeignKey' => 'project_id',
            'joinTable' => 'images_projects'
        ]);
    

    :

    public function initialize(array $config)
    {
        ...
        $this->hasMany('Images', [
            'className' => 'Images',
            'foreignKey' => 'project_id',
            'targetForeignKey' => 'image_id',
            'joinTable' => 'images_projects'
        ]);
        $this->hasOne('CoverImage', [
            'className' => 'Images',
            'bindingKey' => 'cover',
            'foreignKey' => 'id'
        ]);
    

    :

        $this->paginate = [
            'fields' => ['Projects.title', 'Projects.slug', 'Projects.cover'],
            'conditions' => $where,
            'contain' => ['Images','CoverImage' => ['fields' => ['filename']]],
            'limit' => 15,
            'order' => ['id' => 'desc']
       ];
    

    所以,在我的控制器中,我想加载所有的项目和相关的图像,看看上面的代码。运行此命令时出错:

    所以我一直在搜索和阅读,发现我需要前缀插件使其工作。所以我做了代码中可以看到的事情。但是错误仍然存在。

    有什么想法吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   GreyRoofPigeon    6 年前

    经过一番努力,我找到了解决办法。

    $this->Images->... . 使用该代码,将调用ImagesModel。

    因此,我需要手动加载模型,方法是将以下代码添加到 项目控制器.php

    public function initialize()
    {
        parent::initialize();
        $this->loadModel('ProjectsManager.Projects');
    }