5

lithium \ data \ model \ queryを読みましたが、結合の例は見当たりませんでした。

4

2 に答える 2

5

Lithium との結合を実行するには、複数の方法があります。

  1. Lithium は、関係を定義した場合に結合を処理します (マニュアルの例)。
  2. join()メソッドを使用して、既存の Query オブジェクトに結合を追加できます( APIを参照してください)。
  3. key を使用して、Query オブジェクトの配列をファインダーに渡すことができますjoins
  4. を使用して、SQL を接続に直接渡すことができますConnection->read()

他のメソッドについては十分に文書化されているので、Query オブジェクトをファインダーに渡す例を示します。

$fields = array('id', 'name', 'slug');                                                                                                                                                                                                  
$joins = array();
$joins[] = new Query(array(
  'source' => 'client_tests',  
  'constraint' => array('Test.id' => 'client_tests.test_id'),
));
$conditions['client_id'] = $this->data['client_id'];
$tests = Test::all(array(
   'conditions' => $conditions,
   'fields' => $fields,
   'joins' => $joins
));

source結合するテーブルでconstraintあり、結合条件です。Lithium は検索テーブルをモデルの名前にエイリアスするため、それを制約で使用します。次に、必要なその他のパラメーターとともに結合を任意のファインダーに渡すことができます。

執筆時点では、結合 (および関係) はリレーショナル データベースでのみ機能し、MongoDB の DBRef などでは機能しないことに注意してください。

更新: リンクジャックされたリンクを削除しました。

于 2012-02-25T07:31:02.870 に答える