私はlithium \ data \ model \ queryで読みましたが、私は結合の例を見ませんでした。リチウムモデルとの結合を実行するにはどうすればよいですか?
答えて
Lithiumを使用して結合を実行する方法は複数あります。あなたは(マニュアルに
例)の関係を定義したところ、リチウムを処理する
- はあなたのために参加します。
join()
メソッドを使用して既存のQueryオブジェクトに結合を追加できます(APIを参照)。- キー
joins
を使用して、Findオブジェクトに配列を渡すことができます。 Connection->read()
を使用すると、接続に直接SQLを渡すことができます。
他の方法については十分に文書化されているので、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
は結合条件です。リチウムはモデルの名前にテーブルをエイリアスするので、その制約内で使用してください。あなたは、任意の他のパラメータと一緒に任意のファインダーに結合を渡すことができます。
執筆時点では、結合(および関係)はMongoDBのDBRefなどではなく、リレーショナルデータベースでのみ機能することに注意してください。
更新:リンクされたリンクが削除されました。
こんにちは、こんにちは、申し訳ありませんが、私のクエリは、フィールド名に失敗しています。たとえば、slugが両方のテーブルにある場合、大文字のS、小文字のs、小文字のsはtable.slugで指定できますが、大文字のSはtable2のみを表示します。 IE: "SELECT table.slug、table2.slug"の代わりに "SELECT table.slug、table"。私はこれがリチウムが持っている人間の翻訳機能のものと関係があると思いますか? –
これはリチウムバグのように聞こえる。リチウムギブスの問題を確認し、まだ存在しない場合は、問題を開いて失敗したテストケースを添付します。 – michaeltwofish
アイテム#2のAPIリンクは、一部のSEO会社(リンク:実際には両方のリンク)によってリンクが張られています。 – mopsyd
(hasOne、hasMany、またはbelongsToを使用して)関係を設定する場合は、find
コールのオプションにwith
キーを指定して関連データを取得できます。このよう
:
$categories = Categories::find('all', array(
'with' => 'Products'
));
チェックアウトの詳細についてmanual chapter on Relationships。
関係があなたのために結合を管理するのは本当ですが、任意の結合は不可能であると言うのは誤りです。 – michaeltwofish
クール、私は私の答えからそれを削除しました。 – benzado
ダウン投票も削除されました。 – michaeltwofish
- 1. 複数のテーブルで単純な結合を実行するにはどうすればよいですか?
- 2. MS SQL Serverで強制的にインデックス結合を実行するにはどうすればよいですか?
- 3. DebuggerHiddenとイテレータブロックメソッドを結合するにはどうすればよいですか?
- 4. 未知数の行を別の行に結合するにはどうすればよいですか?
- 5. 2つの結合クエリを1つに結合するにはどうすればよいですか?
- 6. php(特にdrupal)のCSVファイルでSQL結合を行うにはどうすればよいですか?
- 7. RoR:検索ロジック:デフォルトの左内部結合の代わりに左結合を実行するにはどうすればよいですか?
- 8. 別のテーブルでクエリ結果のLEFT JOINを実行するにはどうすればよいですか?
- 9. 実行時にマルチキャストデリゲートの結果を抽出するにはどうすればよいですか?
- 10. 実行コンフィギュレーションとデバッグコンフィギュレーションを作成できるようにするにはどうすればよいですか?
- 11. Firebirdのコマンドラインアンインストールを実行するにはどうすればよいですか?
- 12. 2つのRSpecスイートの実行結果を比較するにはどうすればよいですか?
- 13. Excel 2007、ピボットテーブル:合計の実行%を行うにはどうすればよいですか?
- 14. Entity Frameworkがテーブルを結合しないようにするにはどうすればよいですか?
- 15. JQueryでループを実行するにはどうすればよいですか?
- 16. カスタムエラーハンドラでシェルを実行するにはどうすればよいですか?
- 17. qでコールバックチェーンを実行するにはどうすればよいですか?
- 18. xPagesでカスタムコントロールログインフォームを実行するにはどうすればよいですか?
- 19. sharejsをnodejsで実行するにはどうすればよいですか?
- 20. RestheartでfindAndModifyを実行するにはどうすればよいですか?
- 21. iPythonをConsole2で実行するにはどうすればよいですか?
- 22. PHPでターミナルコマンドを実行するにはどうすればよいですか?
- 23. Delphiでコマンドラインプログラムを実行するにはどうすればよいですか?
- 24. Javaでタイマを実行するにはどうすればよいですか?
- 25. C#でコマンドを実行するにはどうすればよいですか?
- 26. ElasticSearchでインデックスクエリを実行するにはどうすればよいですか?
- 27. Windowsでチェックサムを実行するにはどうすればよいですか?
- 28. コマンドヒストリサポートでインタープリタを実行するにはどうすればよいですか?
- 29. C#でSystem.Web.Script.Serializationを実行するにはどうすればよいですか?
- 30. TMPL_VARでencode_entitiesを実行するにはどうすればよいですか?
あなたはテストケースを見ましたか?たぶん、いくつかあります... – Tomen
@Tomen私は質問を書いたとき、いいえ、提案に感謝します。私はちょうどそれをチェックアウトしましたが、私は本当にテストが何をしているのか分かりません。 foo、bar、bazとは何でしょうか? –