問題タブ [esqueleto]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - 多分関係で参加を実行しています
私はモデルを持っています
とモデル
結合クエリで割り当てに関連付けられているすべてのファイルを取得したいと思います。私はEsqueletoを試しましrunJoin
たselectOneMany
が、運がなかったので、結合を使用しないか、rawSqlを使用することを検討しています。それは本当に良い考えではないようですが、私はこれを理解することはできません。その機能のサポートはありますか?
sql - Esqueleto/raw SQL -- 別のテーブルでの並べ替えの結果でクエリを並べ替えますか?
実際、私は SQL の仕組みに少し慣れていません。常に ORM にすべてを任せていました。しかし、この場合、Persistent はこの種の機能を公開していないため、何をすべきか途方に暮れています。
私は多対多の関係を持っています:
そして、タグを主に最新のエントリの日付 (降順) で並べ替え、次にラベル (昇順) で並べ替えたいと考えています。
TagCar
の最新のエントリは 1 月 3 日なので、最初に表示されます。tagApple
の最新のエントリは 1 月 2 日ですが、 tag もそうですBoat
。ただし、ラベルはアルファベット順でApple
ラベルの前に来るため、2 番目と3 番目になります。Boat
Apple
Boat
私の調査を通じて、これを行うには何らかの結合の組み合わせが必要であることがわかりました。ただし、これまでのところ、1 対多の関係 (スレッド内のトピックを最新の投稿で並べ替える) の解決策しか見つかりませんでした。それらを理解していると思いますが、多対多のこれらの 3 方向結合を含むものはありません。関係。
可能な答えとして生のSQLを含めています.SQLの方法を本当に求めているだけだと思います.SQLバインディングにEsqueletoを使用していますが、SQLを理解したら、 Esqueleto への変換は簡単です。バックエンドとして postgresql を使用していますが、私のバインディングは一般的なバックエンド用であるため、postgres 固有のものは使用したくありません。
どこから始めればよいか誰にも分かりますか?どの種類の結合を確認する必要がありますか?また、最新のエントリをどのように並べ替えるのですか?
postgresql - Esqueleto `selectDistinct` が機能しない
selectDistinct
おそらく単純なエラーです。クエリ:
これが機能するSQLクエリを表していると確信しています:
結果を表示するために、結果テーブルを印刷するためのテスト ハンドラーがあります。tpart 1、ラウンド 1 には、複数の穴 1 と穴 2 があることに注意してください。postgresql では、SELECT DISTINICT
これらの重複が削除されました。
読みづらくてすみません。どんな助けでも大歓迎です!
haskell - esqueleto に SQL 文字列を生成させるにはどうすればよいですか?
esqueleto でfrom
ステートメントから SQL 文字列を生成するにはどうすればよいですか?
のドキュメントにtoRawSql
は、「永続的なクエリ ログをオンにするだけでよい」と記載されています。理解できるすべての可能な形式を試しMonadLogger
ましたが、SQLを出力しませんでした。同じドキュメントには、「この関数を手動で使用することは...可能ですが面倒です」とも書かれています。ただし、型のコンストラクターも型の値を返す関数QueryType
もエクスポートされません。QueryType
であることに気づき、!newtype
を使用することで、なんとかこれを回避できました。unsafeCoerce
Connection
また、SQL を生成するためにデータベースに接続する必要がないにもかかわらず、(SQLite 経由で取得した) を提供することを余儀なくされました。
これは私が持っているものです。もっと良い方法があるはずです。
http://hackage.haskell.org/package/esqueleto-1.3.4.2/docs/Database-Esqueleto-Internal-Sql.html
sql - Database.Esqueleto SQL 演算子を動的に選択する
Database.Esqueleto
データベースに保存されているデータに基づいてクエリを動的に作成したいと考えています (DynamicQuery Database.Persist
以下のコード スニペットのエンティティを参照してください)。op
以下のコードはコンパイルされますが、定義が繰り返されているため (テキスト フィールド タイプ、op2
日フィールド タイプ、およびフィールド タイプ) op3
、あまり洗練されていませんBool
。
op
の定義ですべての場合に使用できるような、より一般的な関数を書くことは可能expr
ですか?
op
が使用されている Day フィールド タイプを再利用しようとするとop2
、次のエラー メッセージが表示されます。
コード スニペットは次のとおりです。
haskell - quasiquoter を使用して Database.Persist モデルに一意のキーを追加するにはどうすればよいですか?
persistLowerCase
quasiquoterを使用して 2 つ以上のフィールドを持つ一意のキーを作成するにはどうすればよいですか?
Yesod bookDatabase.Persist
のガイダンスを使用して単純な Web サイトのモデルを作成するために を使用すると、次のエラーが発生します。
アプリ/Models.hs
アプリ/Handlers.hs
バージョン:
拡張機能が欠落しているか、何か他のものを見落としていますか?
haskell - Haskell: Yesod と Esqueleto
Yesod 1.2 の runDB を Esqueleto で動作させるにはどうすればよいですか?
エラー出力は次のとおりです。
私はこのチュートリアルに従おうとしていましたが、Yesod スキャフォールディングとは異なる方法で runDB を設定しているようです。https://github.com/yesodweb/yesod/wiki/Multi-select-field-populated-from-database-(esqueleto を使用)