我在这里遇到麻烦,我有一个类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文件的任何解决方案,所以有人可以帮我这个吗?