Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Tabela Associada Yii, mas nem todos os dados selecionados são recuperados


Joins são melhor usadas no Yii criando Relations , dessa forma você não precisará escrever consultas complexas

Comece adicionando chaves estrangeiras em suas tabelas sql (por exemplo, adicione um patientId de chave estrangeira na cadeira)

Em seguida, se você regenerar seu modelo, poderá ver as relações adicionadas automaticamente (ou você pode adicionar manualmente as relações)
public function relations()
{

    return array(
        'chairs' => array(self::HAS_MANY, 'chair', 'patientId'),
    );
}

E no modelo da cadeira você verá a relação
'patient' => array(self::BELONGS_TO, 'patient', 'patientId'),

Definir a relação sozinha permite acessar os valores no modelo consultado como $model->relationName, se você quiser usar uma coluna na condição 'where', use a seguinte consulta em suas funções de modelo
$patients=Patient::model()->findAll(array(
                'condition' => "$field like '%$value%'",
                'with'=>array('chairs'),
                'select'=> "*",
                )); 

A palavra-chave "with" é importante e pode levar uma série de listas de relações para incluir na consulta. A condição de consulta será aplicada a todas as tabelas incluídas. Você pode pular a palavra-chave "com" aqui se não quiser consultar um campo de outra tabela e precisar apenas dos dados de saída vinculados.

E você pode alcançar as cadeiras atribuídas ao paciente por
foreach($patients as $patient)print_r($patient->chairs);

Existem outras abordagens também , como uma discutida aqui

Para entrar em contato com as relações, acesse aqui