問題タブ [dbix-class]
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.
perl - Perl の DBIx::Class ORM でオブジェクトを自動生成する
DBIx::class の学習を開始し、テーブルを表すオブジェクトを作成する必要があるところまで来ました。このクラスを手動で作成する必要があります (すべてのフィールドと関係をハードコーディングする.....)、またはデータベース スキーマを使用して自動的に生成する方法があります。ローダーについて何か読んだことがありますが、実際にどこで使用されているのかわかりませんでした。
perl - Perl DBIx::Class はデータベースから列を取得する方法をオーバーライドできますか?
私は今日まで DBIx::Class を使用したことがないので、まったくの初心者です。
これが可能かどうかはわかりませんが、基本的に SQLite データベースにタイムスタンプ列を持つテーブルがあります。タイムスタンプ列のデフォルト値は「CURRENT_TIMESTAMP」です。SQLite はこれを GMT タイムゾーンで保存しますが、私のサーバーは CDT タイムゾーンです。
正しいタイムゾーンでタイムスタンプを取得するための私の SQLite クエリは次のとおりです。
データベースから「タイムスタンプ」フィールドを取得するたびに、「MyTable」の DBIx スキーマで強制的に日時関数を適用することが可能かどうか疑問に思っています。
クックブックでは->search() 関数を使えばできるようですが、search()、find()、all()、 find_or_new()、またはデータベースからこの列を取得する関数は、datetime() SQLite 関数を適用しますか?
DBIx::Class には優れたドキュメントがあるようです。私は、検索するのに適切な場所/ものを見つけられないほど、初心者だと思います。
前もって感謝します!
perl - 同じ列に 2 つの条件がある Perl DBIx レコードセットをフィルタリングするにはどうすればよいですか?
私はDBIx::Classに足を踏み入れています — これまでのところ気に入っています。
私が直面している問題の 1 つは、特定の日付範囲にないレコードを除外して、レコードをクエリしたいということです。
<=
等価一致の代わりに特定の種類の一致を行う方法を見つけるのにしばらく時間がかかりました。
これに関する明らかな問題は、フィルターがハッシュ化されているため、"status_date" の値を上書きし、status_date <= $end_date の場所のみを検索していることです。実行される SQL は次のとおりです。
CPAN、Google、および SO を検索しましたが、同じ列に 2 つの条件を適用する方法がわかりませんでした。私が見つけたすべてのドキュメントは、複数の列でフィルタリングする方法を示していますが、同じ列で2つの条件は示していません。
明らかな何かが欠けていると確信しています。ここで誰かが私にそれを指摘できますか?
perl - DBIx::Classにリレーションシップを挿入する
さまざまなデータベーステーブルをモデル化するDBIx::Class::Coreオブジェクトがいくつかあります。
これらのモデルの一部(「キュー」列を持つモデル)では、別のクラスにサブを挿入します(基本的に、モデルオブジェクトをキューの状態に沿って「移動」します)。
そのクラスにもhas_many
関係を注入してもらいたいです
しかし、リレーションシップを正しく登録できないようです(ただし、「No such Relationship」エラーが発生し続けます。ただし、ソースでリレーションシップメソッドを呼び出すと、リレーションシップが返されます)。
何が悪いのかについての手がかりはありますか?
perl - DBIx::Class::Schema::Loader がクラスを作成しないのはなぜですか?
Perl でDBIx::Classを使用して静的スキーマを生成しようとしています。以下に示すコマンドは、Schema.pmを出力し、他のファイルは出力しません。私が間違っていること、またはこれをデバッグする方法について何か考えはありますか?
Windows XP でStrawberry Perlを使用しています。データベースは SQL Server 2000 で、ODBC 接続を介してアクセスします。同じODBC接続でプレーンな古いDBIを使用してクエリを正常に実行できます。
perl - DBIC が主キーの「無効な精度」エラーを生成する
テーブルにはファイル名が格納されます。主キーは自動インクリメント整数です。結果セットを使用した検索が機能します。また、 deleteメソッドを呼び出すと、次のエラー メッセージが生成されます。
ID は主キーです。ID を印刷すると、ピリオドなしで84930と表示されます。削除するとエラーが発生する理由はありますか?
データベースは SQL Server 2000 です。私は DBIx::Class と Strawberry Perl を Windows XP で使用しています。
perl - DateTime::DurationオブジェクトをMySQLデータベースのDBI::Classモデルに保存するにはどうすればよいですか?
現在、DBIx :: Class :: InflateColumn :: DateTimeプラグインを使用して、日付列をDateTimeオブジェクトに拡張し、DateTimeオブジェクトをMySQLの日付値に拡張しています。
個人の年齢(DOBは使用できません)を保存したいのですが、この場合、年、月、または日の値は0になる可能性があります。したがって、DateTime::Durationオブジェクトを使用しています。値が有効な日付でない場合(および0020-08-00が無効な場合)、プラグインは失敗します。プラグインを使用できますか、自分で作成する必要がありますか、それとも別の方法がありますか?
(BTW MySQLはそのような値を許可します-それが「無効」であるかどうかは関係ありません-それは私が必要とするものに対して機能し、RDBMSを変更する予定はありません。)
perl - Catalyst: DBIx::Class::Schema::Loader::make_schema_at() を静的に保存するにはどうすればよいですか?
PACKAGE ->add_columns() がすべてを lc しないように強制できるようにしたいと思い
ます。オプションがあることは知っていpreserve_case
ますが、どこに置くべきかわかりません。/conf に作成できる「myproj_schema.pl」ファイルはありますか?
perl - DBIx::Class Schema Loaderを使用する場合、カスタムの関係とメソッドを別々のファイルで維持する方法はありますか?
現在、DBIx::Class::Schema::Loaderを使用して、一連の Result クラスを生成および再生成します (db スキーマが変更された場合)。
これらのクラスの下部に追加の関係とメソッドを追加します。これにより、人々がスキーマを再生成または変更すると、マージ地獄が発生します。
カスタムの変更を、自動生成されたファイルと並行して配置される別のファイル セットに維持したいと考えています。
これを行うためのシンプルでクリーンな推奨方法はありますか?
perl - DBIx::Classのhas_many関係からデータを取得する
2つのテーブル(用語と定義)の単純なケースを考えると、用語has_many
定義と定義belongs_to
用語では、すべての用語と対応する定義がフェッチされ、何らかの方法で表示されます。
これが私がこれまでに思いついたものです:
それは仕事をしますが、私は別の、より粗雑でないアプローチをとることができるかどうか疑問に思いました。