0

私は2つのテーブルを持っています:

  1. Evaluation_employees フィールド: id、ユーザー名
  2. Evaluation_results フィールド: id、グレード、evaluation_employee_id

Evaluation_results ビューでは、従業員のユーザー名で ( cakephp 検索プラグインを使用して) 結果を検索する必要がありますが、evaluation_results テーブルには、ユーザー名ではなく、従業員の id(evaluation_employee_id) があります。それらのテーブル間のリンクを作成して機能させる方法がわかりません。

私の見解のコード (evaluation_results/index.ctp):

echo $this->Form->create('EvaluationResult', array(
            'url' => array_merge(array('action' => 'index'), $this->params['pass'])
            ));
echo $this->Form->input('username', array('div' => false, 'empty' => true)) . '<br/><br/>';
echo $this->Form->submit(__('Search', true), array('div' => false));
echo $this->Form->end();

コントローラーのコード (evaluation_results_controller.php):

var $components = array('Search.Prg');
    function index() {
        $this->Prg->commonProcess();
        $this->EvaluationResult->recursive = 0;
        $this->paginate = array(
                    'conditions' => $this->EvaluationResult->parseCriteria($this->passedArgs));
        $this->set('evaluationResults', $this->paginate());
    }

私のモデルのコード (evaluation_result.php):

public $actsAs = array('Search.Searchable');

    //Search fields data description for processing.
    public $filterArgs = array(
        array('name' => 'EvaluationEmployee.username', 'type' => 'query', 'method' => 'filterUsername')
    );

    //Method as decalred in $filterArgs to process the free form search.
    public function filterUsername($data, $field = null) {
        if (empty($data['EvaluationEmployee']['username'])) {
            return array();
        }
        $username = '%' . $data['EvaluationEmployee']['username'] . '%';
        return array(
                $this->alias . '.EvaluationEmployee.username LIKE' => $username
            );
    }

さらに情報が必要な場合は教えてください。

4

1 に答える 1

0

モデルに関連付けを設定すると、従業員を検索すると、関連するすべてのレコードが自動的に検索されます。

http://book.cakephp.org/1.3/en/view/1039/Associations-Linking-Models-Together

于 2012-06-03T23:54:47.217 に答える