sql >> データベース >  >> RDS >> Mysql

Yii結合されたテーブルですが、選択されたすべてのデータが取得されるわけではありません

    結合は、リレーションを作成することでYiiで最もよく使用されます。これにより、複雑なクエリを作成する必要がなくなります

    SQLテーブルに外部キーを追加することから始めます(たとえば、椅子に外部キーpatientIdを追加します)

    次に、モデルを再生成すると、リレーションが自動追加されたことがわかります(または手動でリレーションを追加できます)

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

    そして、椅子のモデルでは、関係がわかります

    'patient' => array(self::BELONGS_TO, 'patient', 'patientId'),
    

    リレーションを単独で定義すると、クエリされたモデルの値に$ model-> ratioNameとしてアクセスできます。「where」条件で列を使用する場合は、モデル関数で次のクエリを使用します。

    $patients=Patient::model()->findAll(array(
                    'condition' => "$field like '%$value%'",
                    'with'=>array('chairs'),
                    'select'=> "*",
                    )); 
    

    「with」キーワードは重要であり、クエリに含める関係のリストの配列を取ることができます。クエリ条件は、含まれているすべてのテーブルに適用されます。別のテーブルのフィールドをクエリせず、出力データのみをリンクする必要がある場合は、ここで「with」キーワードをスキップできます。

    そして、

    によって患者に割り当てられた椅子に到達することができます
    foreach($patients as $patient)print_r($patient->chairs);
    

    他のアプローチもあります。たとえば、ここ

    関係についてさらに詳しく知りたい場合は、こちら にアクセスしてください。




    1. OracleでSYSDATEのUTC値を取得する方法

    2. SQL(MySQL)パート2の今日の日付に基づくクエリの結果を返す

    3. MSDBのメンテナンスの重要性

    4. テーブルをロックせずにMySQLDumpを実行する