Neste momento tenho uma pequena aplicação a funcionar. Essa aplicação cobre todos os departamentos de uma empresa. O que pretendo é o seguinte:
Por exemplo, se pertencer ao departamento de Produção, quando fôr a gerir, listar materiais, etc… só mostra os materiais desse departamento. Se pertencer ao departamento financeiro, só aparece listado os materiais do departamento financeiro e assim por diante.
Por exemplo, numa CGridView, se nao filtrar os dados vai-me listar todos os materiais,
Na hora de inserir o material você deve ter um campo na tabela por exemplo, departamento_id, que fará a relação com uma tabela por exemplo departamento, algo como:
// no model Material
public function relations()
{
return array(
'departamento'=>array(self::BELONGS_TO, 'Departamento', 'departamento_id'),
);
}
Não sei se é exatamente isso que você quer, mas qualquer coisa se eu puder ajudar, estou ai. Abraços.
Ok Anderson! Agora imagina que vou adicionar um utilizador. Vou ter uma Dropdowlist só com os materiais que foram associados para esse departamento. Terei sempre que fazer uma query para filtrar os dados, certo?
Basta você acrescentar uma condição (condition) em relations: (melhor seria no model Departamento: Departamento possui vários Materiais
// no model Departamento
public function relations()
{
return array(
'material'=>array(self::HAS_MANY, 'Material', 'departamentoId'),
‘condition’=>’material.departamentoId=’.Departamento.Id,
‘order’=>’material.Id’), //opcional para ordenar
);
}
Agora você pode chamar o relacionamento para montar seu dropdownlist:
Com isto, ele vai pegar o local do user logado. Se ele pertencer a um certo local, quando for a inserir qualquer registo numa view, só lista os materiais locais a que pertence esse user.