問題タブ [laravel-query-builder]

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.

0 投票する
1 に答える
1352 参照

php - 2 つの異なるデータベース テーブルのデータを照合して表示する方法

別のテーブルから他のデータと一致させるために使用される重要なデータを引き出すソリューションを探しています。次に、このデータをブレード内に表形式で表示したいと思います。

データベース内には、マッチングに使用したいユーザーの資格情報を格納する「マッチング」エンティティがあります (たとえば、製品の希望価格)。「マッチング」は Web サイト ユーザーに属しているため、エンティティには「peopleID」が含まれます。ユーザーが作成されると、その「一致する」エンティティ内に保存される一致オプションを割り当てます。Matching エンティティ内の行数は、ユーザー作成段階で選択した郡の数によって異なります。

データベースから一致するデータを引き出すには、foreach ループを使用する必要があることを知っています。

私が抱えている問題は、ブレード内でデータを出力するときです。何らかの理由で、配列の最後の項目とのみ製品に一致します。一致するすべての資格情報を持つ製品と一致する必要があります。

コード:

そのため、顧客の 1 人に対して、異なる「郡」を持つ 2 つの一致があります。最後に追加されたデータのみが表示されます。別の郡を含む他の一致のデータを表示するにはどうすればよいですか。私が何を意味するか知っていることを願っています。

助けてくれてありがとう。

更新 - コードの大部分が完了しました。ご協力ありがとうございました。

2 番目の質問は、残りのマッチング オプションの追加に関するものです。前に述べたように、マッチの数は追加された郡の数に依存します。各試合には独自の属性があります。アイデアは、各郡の一致した結果を表示することです。

これを行うにはifステートメントが必要になることはわかっています。

実装したい例を次に示します。

このコードに:

助けてくれて本当にありがとうございます!

@アップデート

関係:

マッチ:

人々:

Matchは人々の「検索」資格情報を保持しているため、それらの間に接続があります。あなたが提供した最初のソリューションは完全に機能します。現在、このソリューションは郡ごとに売上を除外しています。これは、最小価格と最大価格 (minprice、maxprice) および brand_a や brand_b などのその他の資格情報でフィルター処理する必要があるため、良い動きです。

brand_a と brand_b の考え方: チェックボックスは、マッチング内で brand_a と brand_b の値を変更する役割を果たします。これらがチェックされている場合、Matching エンティティ内の値は「1」になります。これらがチェックされていない場合、それらは「0」になります。これは、これらの値によって売上を除外する必要がないことを意味します。

Sales エンティティには "Holdings" 属性が含まれています。"Holdings" の値は、brand_a または brand_b にすることができます。売上には「価格」も含まれます。

したがって、これを明確にするために:

販売エンティティには、SaleID、Price、Holdings、County が含まれます。

所蔵は次の値です: brand_a または brand_b。価格はただの数字です。郡はプレーンテキストです。

一致するエンティティには、PeopleID、MinimumPrice、MaximumPrice、brand_a、brand_b、county が含まれます。

PeopleID は外部キーです。どのマッチングがどのユーザーに属しているかを知る必要があります。(選択した郡の数によっては、1 人のユーザーに対して複数のマッチングが存在する可能性があります)。MinimumPrice と MaximumPrice は数値です。brand_a と brand_b は、チェックボックスがオンになっているかどうかに応じた値 (1 または 0) です。郡は郡の名前です。

ここで、person 1543 (peopleID = 1543) に 3 つの一致が含まれ、それぞれに異なる検索資格情報が含まれている場合。

1 番目: PeopleID: 1543 MinimumPrice: 1000 MaximumPrice: 7000 brand_a: 0 brand_b: 1 郡: county_a

2 番目: PeopleID: 1543 MinimumPrice: 2500 MaximumPrice: 10000 brand_a: 1 brand_b: 1 郡: county_f

3 番目: PeopleID: 1543 MiniumPrice: 2000 MaximumPrice:9500 brand_a: 0 brand_b: 0 county: county_d

このデータを Sales 内のデータと照合する必要があります。さまざまな価格などで 1,000 を超えるさまざまな販売が存在する可能性があります。それらをフィルタリングし、個人のマッチングに基づいて、その人が希望する販売を表示するだけです。

これで状況がよりよくわかることを願っています。ありがとう。

0 投票する
1 に答える
1704 参照

php - Laravel Query Builder: リスト結果のキャッシュ

次のようにクエリ結果をキャッシュすることができます。

しかし、リストの結果をキャッシュするにはどうすればよいですか。これは機能しません:

スローされたエラー:

0 投票する
1 に答える
99 参照

php - Laravel ORM/Query builder 次のページの結果/コンテンツを取得する方法

こんにちは、Laravel ページネーションを使用して残りのデータを 10 で返すクエリを作成する方法について助けが必要です。

テーブルには 15 個のデータがあり、最初のリクエストでは正しい最初の 10 個のデータが返されますが、残りの 5 個を取得する必要があります。

私はjqueryの無限スクロールを使用してこれを行っているので、ビューにページネーションやリンク/URLを表示していません

前もって感謝します、

0 投票する
1 に答える
106 参照

sql - laravelで2つのデータセットを連鎖させる最も効率的な方法

Laravel と言ってあまりに具体的な質問をしている場合は、私を爆破することができますが、Laravel 内のツールを使用して 2 つのデータセットを連鎖させる最も効率的な方法は何なのか疑問に思っています。

雄弁なリレーションシップを使用するか、クエリ ビルダーを使用して結合するかを選択する際に、使用すべき特定の考え方はありますか? または、考慮すべき小規模または大規模なデータセットでクエリビルダーを使用することの欠点はありますか?

ユーザー テーブルから 1 つまたは 2 つのフィールドのみを必要とするチケット システムを構築しています。この時点でリレーションシップの使用を検討するのは非常にやり過ぎに思えますが、システムのニーズが高まると、コードが乱雑になる可能性があります。これは、関係が解決するためにあるという状況ですか?

雄弁なリレーションシップを使用する際に注意すべきカップリング タイプのアクションはありますか?

質問の仕方がよくわからない場合は、言い換えてみます。

0 投票する
3 に答える
597 参照

mysql - Laravel クエリ ビルダーを使用して同じテーブルから 2 つのクエリを結合する方法

この sales テーブルから、2 つのクエリを作成しました。

2つのクエリを結合したい...

これを達成するために

ここに画像の説明を入力

これが私の売上表です

実売表

0 投票する
2 に答える
14236 参照

php - wherehasクエリに変数を渡すLaravel

laravel で wherehas クエリに変数を渡したい..しかし、未定義の変数のエラーが発生します.In method, if has nature then go where has natures equal to $catname... 行番号. 4

ここに画像の説明を入力

0 投票する
4 に答える
9007 参照

laravel - Laravel クエリビルダーとテーブル名

Query Builder を使用すると、データベース テーブル名をかなり多く、異なるファイルに書き込むことに気付きました。データベース テーブル名を変更する場合、プロジェクト内のかなりの数の行を検索して変更する必要があります。これは、Laravel 担当者が気づいて解決策を思いついた問題ですか?

データベース名の代わりにクラス モデルを使用する Eloquent アプローチが気に入っています。しかし、クエリによっては、クエリ ビルダーの方が優れたソリューションだと思います (私はこの問題の専門家ではありませんが)。

0 投票する
2 に答える
10161 参照

laravel - where datediff < 15 from today in query builder laravel

このようなテーブル製品にフィールドがあります

exp_date既にdatemysqlでフォーマットされている今日から15日未満の日付
をデータ化したいselectexp_date

私はすでにこのようなことを試しています

しかし、私はこのエラーが発生します
Object of class Illuminate\Database\Query\Expression could not be converted to int

それを修正する方法は?

ps:
私はlaravel 4.2を使用しましたが、クエリビルダーまたは生のクエリによるものを好みます