如何使用id从我的数据源获取信息? (CAKEPHP 2)

时间:2018-03-27 21:05:28

标签: php cakephp cakephp-2.0

我在这里遇到麻烦,我有一个类AreaInteressesController和CargosController,它们是n-to-n,我有AreaInteressesCargosController:

AreaInteressesController

App::uses('AppController', 'Controller');
class AreaInteressesController extends CockpitAppController{

public $nome_secao = "Area Interesse";

public $uses = array("AreaInteresse");

public function beforeFilter(){

    parent::beforeFilter();

    $this->set("nome_secao", $this->nome_secao);        
    public function index(){

    try{



        $this->_excluir();

        $q = '';

        $this->paginate['limit'] = $this->limite_por_pagina;

        if(!empty($this->params['url']['q'])){

            $this->paginate['conditions'][] = array('OR' => array($this->modelClass . '.descricao LIKE' => "%" . $this->params['url']['q'] . "%"));

            $q = $this->params['url']['q'];
        }

        $this->paginate['order'] = array($this->modelClass.".created" => 'DESC' );
        $this->set('q', $q);
        $this->set('lista', $this->paginate());
    }catch(ValidacaoException $e){

        $this->_trataExcecao($e);

    }catch(Exception $e){

        $this->_trataExcecao($e);
    }

}

CargosController

App::uses('AppController', 'Controller');

class CargosController extends CockpitAppController {

public $nome_secao = "Cargos";

public $uses = array("Cockpit.Cargo", "Cockpit.AreaInteresse");

public function beforeFilter() {

    parent::beforeFilter();

    $this->set("nome_secao", $this->nome_secao);
}

public function index() {
    try {

        $this->_excluir();

        $q = '';
        $this->paginate['limit'] = $this->limite_por_pagina;

        if (!empty($this->params['url']['q'])) {

            $this->paginate['conditions'][] = array($this->modelClass . '.descricao LIKE' => "%" . $this->params['url']['q'] . "%");

            $q = $this->params['url']['q'];
        }

        $this->paginate['order'] = array($this->modelClass . ".descricao" => 'ASC');

        $this->set('q', $q);
        $this->set('lista', $this->paginate());
    } catch (ValidacaoException $e) {

        $this->_trataExcecao($e);
    } catch (Exception $e) {

        $this->_trataExcecao($e);
    }
}

和AreaInteressesCargosController

App::uses('AppController', 'Controller');

class AreaInteressesCargosController extends CockpitAppController{

public $nome_secao = "Area Interesse + Cargos";

public $uses = array("AreaInteressesCargo","AreaInteresse","Cargo");

public function beforeFilter(){

    parent::beforeFilter();

    $this->set("nome_secao", $this->nome_secao);

}

public function index(){

    try{
        $this->loadModel('Cargo');
        $this->set( "cargo", $this->Cargo->find( "list", array( "order" => " Cargo.descricao ASC ", "fields" => " Cargo.id, Cargo.descricao ","condition" => "Cargo.id = AreaInteressesCargo.cargo_id" ) ) );
        $this->_excluir();

                   $q = '';

       $this->paginate['recursive'] = 2;

        $this->paginate['limit'] = $this->limite_por_pagina;

       // $this->paginate['order'] = array($this->modelClass.".created" => 'DESC' );


        if(!empty($this->params['url']['q'])){

            $this->paginate['conditions'][] = array('OR' => array($this->modelClass . '.descricao LIKE' => "%" . $this->params['url']['q'] . "%"));

            $q = $this->params['url']['q'];
        }


        $this->set('q', $q);
        $this->set('lista', $this->paginate());
    }catch(ValidacaoException $e){

        $this->_trataExcecao($e);

    }catch(Exception $e){

        $this->_trataExcecao($e);
    }

}

模型货物

App::uses('AppModel', 'Model');

class Cargo extends CockpitAppModel {

public $useTable    = "cargos";
public $primaryKey  = 'id';

public $validate = array(
    'codigo' => array(
        'rule' => 'notBlank',
        'required' => true,
        'message' => 'O campo codigo é obrigatorio.'
    ),
        'descricao' => array(
        'rule' => 'notBlank',
        'required' => true,
        'message' => 'O campo descricao é obrigatorio.'
    )    
);

public $hasAndBelongsToMany = array(
    "Cockpit.AreaInteresse" => array(
        'className' => 'AreaInteresse',
        "foreignKey" => "area_interesse_id",
        'fields' => array('AreaInteresse.id','AreaInteresse.descricao')
    )
);

}

Model AreaInteresse

App::uses('AppModel', 'Model');

class AreaInteresse extends CockpitAppModel {

public $usesTable = 'area_interesses';

public $validate = array(
    'codigo' => array(
        'rule' => 'notBlank',
        'required' => true,
        'message' => 'O campo codigo é obrigatorio.'
    ),
        'descricao' => array(
        'rule' => 'notBlank',
        'required' => true,
        'message' => 'O campo descricao é obrigatorio.'
    )    
);

public $hasAndBelongsToMany = array(
    'Cockpit.Cargo'=> array(
        'className' => 'Cargo',
        "foreignKey" => "cargo_id",
        'fields' => array('Cargo.id','Cargo.descricao')
    )

);

}

Model AreaInteressesCargo

App::uses('AppModel', 'Model');

class Cargo extends CockpitAppModel {


public $BelongsTo = array(
    "Cockpit.AreaInteresse" => array(
        'className' => 'AreaInteresse',
        'foreignKey' => 'area_interesse_id',
        'fields' => array('AreaInteresse.id','AreaInteresse.descricao')
    ),
    'Cockpit.Cargo'=> array(
        'className' => 'Cargo',
        'foreignKey' => 'cargo_id',
        'fields' => array('Cargo.id','Cargo.descricao')
    )
);

}

我正在尝试使用Cargos的描述,但我只能将他的id用于foreignKey,我尝试了堆栈溢出和CakePHP文件的任何解决方案,所以有人可以帮我这个吗?

0 个答案:

没有答案