質問

私はCakePHPを初めて使用しており、「初心者からプロのようにCakePhpを開始する」という補強材を通して取り組んでいますが、ベーキングの章の後に問題に遭遇しました。

(私の最近の質問を見たことがあるなら、私はWin7マシンでベイクコンソールを動作させることができないので、私はその章をスキップしなければならなかったことがわかります)。

問題は、本の冒頭でブログアプリケーションの例を開始したときに使用されていたにもかかわらず、テーブルの関連付けがもはや適切に機能しているとは思わないということです。

ブログの例には、次の表があります。

Users
Posts

ユーザーモデル:$ hasmany = array( 'post');投稿モデル:$ belongsto = array( 'user');

現在、すべてをテストするためだけに足場を使用していますが、Post_ControllerのカスタムビューとカスタムADD()アクションがいくつかあります。

問題は、post_controllerにadd()アクションを使用する場合、ユーザーのIDフィールド(ユーザーテーブルから)が投稿テーブルのuser_id外部キーフィールドに入れられないことです。したがって、投稿を表示すると、IDが見つからないため、ビューの「著者」の部分が空白です。使用する場合 debug($posts) その後、返された配列には、各投稿のuser_idに関する情報がなく、したがって「user」配列には情報がありません。

user_idは、cakephpのテーブル間に関連性を追加する従来の方法だと思いましたが、機能していないようです。

私がする必要があることはありますか?

よろしくお願いします、

インフィニティフィズ

PS CakePhpの問題であなたを圧倒しているなら、みんな申し訳ありません。

PPS

ほとんど忘れてしまった、投稿の私のadd.ctpビューは次のように見えます:

<div class="posts form">
 <?=$form->create('Post');?>
 <fieldset>
 <legend>Add Post</legend>
 <?
  e($form->input('name'));
  e($form->input('date'));
  e($form->input('content'));
  e($form->input('User'));
 ?>
 </fieldset>
 <?=$form->end('Submit');?>
</div>
<div class="actions">
 <ul>
  <li><?=$html->link(__('List Posts', true),array('action'=>'index'));?></li>
  <li><?=$html->link(__('List Users', true),array('controller','users', 'action'=>'index'));?></li>
  <li><?=$html->link(__('New User', true),array('controller'=>'users', 'action'=>'add'));?></li>
 </ul>
</div>

およびpost_controller.phpのadd()アクション:

function add()
{
   if(!empty($this->data))
   {
    $this->Post->create();
    if($this->Post->save($this->data))
    {
     $this->Session->setFlash('The Post has been saved', true);
     $this->redirect(array('action' => 'index'));
    }
    else
    {
     $this->Session->setFlash('The Post could not be saved. Please try again.', true);
    }
   }
   $users = $this->Post->User->find('list');
   $this->set(compact('users'));
}
役に立ちましたか?

解決

私はケーキも初めてですが、私が知る限り、あなたはこれをadd.ctpで変更するべきだと思います:

$form->input('User')

これに

$form->input('user_id')

Formhelperは、入力をドロップダウンとして表示するように注意します(Hasmany-Belongsto参照に基づいています)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top