リチウムモデルで結合を実行するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/9391062

  •  29-10-2019
  •  | 
  •  

質問

Lithium Data Model Queryを読みましたが、結合の例はありませんでした。

役に立ちましたか?

解決

リチウムで結合を実行するには、複数の方法があります。

  1. リチウムは、関係を定義している(あなたのために結合)を処理します(マニュアルの例).
  2. を使用して既存のクエリオブジェクトに結合を追加できます join() 方法(を参照してください API)).
  3. キーを使用して一連のクエリオブジェクトをファインダーに渡すことができます joins.
  4. SQLを使用して接続に直接渡すことができます Connection->read().

他の方法はかなりよく文書化されているので、クエリオブジェクトをファインダーに渡す例を示します。

$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 結合基準です。リチウムエイリアスモデルの名前にテーブルを検索するので、制約でそれを使用してください。その後、必要な他のパラメーターとともに、任意のファインダーに参加を渡すことができます。

執筆時点では、結合(および関係)は、MongodbのDBREFのようなものではなく、リレーショナルデータベースでのみ動作することに注意してください。

アップデート: :リンクジャックされたリンクを削除しました。

他のヒント

関係を設定した場合(Hasone、hasmany、またはbelumstoを使用して)、関連するデータを取得することで、 with あなたのオプションのキー find 電話。

このような:

$categories = Categories::find('all', array(
  'with' => 'Products'
));

をチェックしてください 関係に関するマニュアルの章 詳細については。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top