Помощь с CakePHP: я не могу испечь - PullRequest
1 голос
/ 22 апреля 2011

Я новичок в CakePHP и у меня проблема.Я создал 2 таблицы в mysql. Отношение, которое я пытаюсь создать, состоит в том, что «category_products» имеет много «products».

CREATE TABLE category_products (  
  id int NOT NULL PRIMARY KEY,  
  name varchar(30) NOT NULL  
) ENGINE=InnoDB;  

CREATE TABLE products (  
  id int NOT NULL PRIMARY KEY,  
  name varchar(30) NOT NULL,  
  category_product_id int NOT NULL,  
  FOREIGN KEY (category_product_id) REFERENCES category_products(id)  
) ENGINE=InnoDB; 

Когда я пеку «category_products», все хорошо, но когда я пеку «products'в консоли, я получаю это:

=============================================================   
Possible Models based on your current database:  
1. CategoryProduct  
2. Product  
Enter a number from the list above,type in the name of another model, or 'q' to exit    
[q] > 2  

Baking model class for Product...  
Creating file /opt/lampp/htdocs/caketest/app/models/product.php  
Wrote `/opt/lampp/htdocs/caketest/app/models/product.php`  
Product Model was baked.  
SimpleTest is not installed. Do you want to bake unit test files anyway? (y/n)   [y] > n  

**Error: Missing database table 'categories' for model 'Category'**

============================================================  
Cakephp **doesn't create the view** and when i open the **model** for product.php and i see this at then end.  

var $belongsTo = array(  
        'CategoryProduct' => array(  
            'className' => 'CategoryProduct',  
            'foreignKey' => 'category_product_id',  
            'conditions' => '',  
            'fields' => '',  
            'order' => ''  
        )  
    );  

var $hasAndBelongsToMany = array(  
        'Category' => array(  
            'className' => 'Category',  
            'joinTable' => 'category_products',  
            'foreignKey' => 'product_id',  
            'associationForeignKey' => 'category_id',  
            'unique' => true,  
            'conditions' => '',  
            'fields' => '',  
            'order' => '',  
            'limit' => '',  
            'offset' => '',  
            'finderQuery' => '',  
            'deleteQuery' => '',  
            'insertQuery' => ''  
        )  
    );  

Мой вопрос, что я делаю неправильно ???очевидно, CakePHP думает, что я пытаюсь создать отношения HABTM.Я использую CakePHP 1.3.7

, пожалуйста, помогите мне.Спасибо!

1 Ответ

0 голосов
/ 23 апреля 2011

Так устроен конкурс. Вы не делаете ничего плохого, за исключением того, что у вас есть продукты в базе данных, поэтому он считает, что category_products - это HABTM. Если вы хотите, чтобы он работал правильно, у вас есть несколько опций:

1- Удалите таблицу продуктов перед выпечкой category_products, а затем вручную добавьте отношение в category_products.

2- Измените таблицу продуктов на другую во время выпечки, затем вернитесь к моделям и обновите имена и отношения к продукту.

3- Проигнорируйте полученную ошибку и удалите отношение HABTM из модели.

Удачного кодирования!

...