0

Cakephp の命名規則に問題がありますが、ここで間違いを見つけることができません。

2 つのモデルがあり、それらが結合されています (後でコードを含めます)。インデックス ファイルには、2 つの異なるテーブルからのデータを表示する際に問題があります。エラーが発生します。

データベース エラー エラー: SQLSTATE[42S22]: 列が見つかりません: 1054 不明な列 'Com.info_id' が 'フィールド リスト' にあります

モデル

(Info.php)

<?php

class Info extends AppModel
{
public $hasMany = array('Com');
public $validate = array(
    'title'=>array(
        'rule'=>'notEmpty'
    ),
    'body'=>array(
        'rule'=>'notEmpty'
    )
);
}
?>

(Com.php)

<?php

class Com extends AppModel
{
public $belongsTo = array('Info');
public $validate = array(
    'mail'=>array(
        'requierd'=>array(
            'rule'=>array('notEmpty'),
            'message'=>'Write your email'
        )
    ),
    'body'=>array(
        'required'=>array(
            'rule'=>array('notEmpty'),
            'messages'=>'Write smth'
        )
    )
);
}
?>

コントローラー (InfosController.php)

<?php

class InfosController extends AppController
{
public $helpers = array('Html','Form','Session');
public $components = array('Session');

public function index()
{
    $this->Info->recursive = 1;
    $this->set('inform', $this->Info->find('all'));
}}

(ComsController.php) (これからインデックスを削除しようとしてもうまくいきません)

<?php
class ComsController extends AppController
{
public $helpers = array('Html','Form','Session');
public $components = array('Session');

public function index()
{
    $this->set('com',  $this->Infos_com->find('all'));
}}

少なくとも (View/Infos/index.ctp) (重要ではないため、インデックスが空であってもエラーが発生します)、ボディ部分

 <?php if (isset($inform)) {
foreach($inform as $info) {
        echo $info['Info']['title']; echo '<br>';
        echo $info['Info']['body'];
        foreach($info['Com'] as $comment) {
            echo $comment['Com']['body'];
        }
    }
} ?>

私のデータベースのテーブルは Infos と Coms です。以前は Info テーブルでのみ作業していましたが、問題はありません。 $public $hasMany = array('Com') を使用すると問題が発生します

ヒントやアドバイスに感謝します。よろしくお願いします !!

4

2 に答える 2

1

規則については Cake のマニュアルを読む必要があります。あるテーブルを別のテーブルに関連付ける方法に応じて、relatedtable_idあるテーブルのフォームの外部キーが他のテーブルに関連付けられることが期待されます: http://book.cakephp.org/2.0/en/getting-started/cakephp-conventions.html

また、@thecodeparadox が指摘するようにInfos_com、有効なモデルではありません。その規則は、 と の間の結合テーブルを表し、Info両方Comのテーブルの外部キーを保持するモデル用です。bakeDB が慣例に従って設定されていることを確認してから、ユーティリティを使用することを強くお勧めします: http://book.cakephp.org/2.0/en/console-and-shells/code-generation-with-bake.html

于 2013-11-13T20:29:35.777 に答える