1

私は Cakephp 2.1 と Wamp を使用していますが、すべて問題ありません。1 つのモデル (プロジェクト) から値 (id フィールドではない) を取得し、それを保存するレコード (セットアップ) に割り当てる必要があります。

SetupsConstroller.php

$this->request->data['Setup']['client_id'] = $this->Setup->$projects['Project']['client_id'];

モデルのセットアップ.php

var $belongsTo = array('Client', 'User', 
        'Project' => array(
                'className' => 'Project',
                'foreignKey' => 'pr_number'
                )
        );

私の SetupsController では、プロジェクトを取得します。

$projects = $this->Setup->Project->find('list', array(
        'order' => 'name',
        'foreignKey' => 'pr_number',
        'fields' => array('Project.pr_number', 'Project.name'),
        'conditions' => array('pr_status' => 2)
            ));

したがって、セットアップを追加すると、$projects から pr_number を取得できます。

add.ctp

echo $this->Form->input('pr_number', array('label' => 'ASC Project:', 'options' => $projects));

今、私が必要としているのは、プロジェクト レコードからの別の値 (client_id) であり、保存されているセットアップ モデルの列に割り当てます。保存する直前に現在の user_id を割り当てるために行ったようなこと:

SetupsController.php (機能追加)

$this->request->data['Setup']['user_id'] = $this->Auth->user('id'); // this works fine

// Next line needs fixing, returns NULL, Don't know how to access client_id from projects model!
$this->request->data['Setup']['client_id'] = $this->Setup->$projects['Project']['client_id'];

        if ($this->Setup->save($this->request->data)) { // then save

loadModule やその他の提案を試みましたが、うまくいきませんでした。

そんなに珍しくないと思いませんか?

誰でも助けることができますか?

どうもありがとう。

メキシコ、ティフアナ出身のカルロス

4

1 に答える 1

1

以来Setup belongsTo Project:

$selectedProjectId = $this->request->data['Setup']['pr_number'];

$client_id = $this->Setup->Project->find
    (
        'first',
        array
        (
            'recursive' => -1,
            'fields' => array('Project.client_id'),
            'conditions' => array('Project.pr_number' => $selectedProjectId)
        )
    );

// something like this should work
$this->request->data['Setup']['client_id'] = $client_id['Project']['client_id'];

ただし、このコードはテストせずに入力しているため、最初の試行では機能しない可能性があります。そうでない場合は、これを実行して、何が得られたかを確認します。

debug($client_id); // it should be here

一方、データベース内のフィールドをそのようにコピーすると、データベースの設計に問題がある可能性があります。

于 2012-05-04T22:21:35.367 に答える