問題タブ [laravel-collection]
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.
laravel - Laravel コレクションを日付でフィルタリングする
以下のコードに$allZip["assigned_date"]
は value があります2016-07-27 18:12:26
。created_at
タイムスタンプフィールドでもあるフィールドと比較しようとすると、結果は空のコレクションになります。
データベースには、 value fromとzip
value のフィールドに一致するフィールドを持つデータがあります。したがって、コレクション内の 1 つのアイテムを返す必要がありますが、代わりに空のコレクションを返します。なんで?$allZip["zip"]
created_at
2016-07-19 18:12:26
php - Laravel でのコレクションのクエリ
Laravel コレクションにクエリを実行すると、データベースにクエリが実行されるのではなく、既にフェッチされたものに対してクエリが実行されるということを正しく理解できましたか?
たとえば、コレクションを返すリレーションがあります。
次のコードはデータベースにクエリを実行しますか、それとも PHP 機能を使用してコレクションを操作しますか?
そして、私が理解している限り、関係を照会すると、すでにフェッチされた結果を操作する代わりに、データベースが照会されます。
基本的に、$role->permissions - 取得した結果を「オフライン」で処理しますが、$role->permissions() - データベースにクエリを実行します
一般的にどの方法がより効率的で、いつですか?
laravel - コレクション内のより深いインデックス付き配列へのLaravel 5.2プッシュ
最初にコレクションを配列に変換せずに、コレクションのより深いインデックスに変更を加える/マージする方法はありますか?
$arrays をすべて含む 4 つのインデックスを持つ $collection があるので、配列にプッシュするには、次のようにする必要があります。
しかし、より良い方法があることを望んでいたので、先に進む前に元の $collection を再収集(...)する必要はありませんでした。以下のようなもので、うまくいかないことがわかっていますが、上記よりも厄介でないもの:
php - Laravel Eloquentの合計関係の列は、他の関係を介して
これらのモジュールがあるとしましょう:
- クーポン
- 注文 (.., Coupon_id)
- アイテム (...、order_id、価格)
そして、それらの関係があります:
Coupon
たくさんありOrder
ます。Order
たくさんありItem
ます。
ここまでは順調ですね。
ここで、クーポンに属する注文に属するアイテムの価格を合計したいと考えています。そこで、次のようなことを考えました。
メソッドがリレーションのorders()
a を返すため、うまくいきません。Collection
item
プロパティが保護されているというエラーが表示されます。Item
私のモジュールとは関係がないことがわかりましCollection
たprotected $items = [];
。
それで、いくつかの事実を明らかにした後、私の質問/問題は、に属する の をitems->price
どのように合計できますか?orders
Coupon
もちろん、次のような foreach ループを実行することで目標を達成できます。
しかし、私はよりクリーンなソリューションを探しています。誰?
php - Laravel 5コレクションの問題:等しくない場所
私は現在、ユーザーがExcelファイルを挿入できるモーダルに取り組んでいます。システムのタスクは、新しいデータベース レコードをアップロードおよび/または追加することです。レコードが新しい場合、またはデータベースに存在するレコードと同一の場合です。ただし、スラッグ列が名前列と同一でないレコードを削除するための削除機能も必要です。
現在、私はLaravel 5.3を使用しており、これが現在のコントローラーです。
上記の dd はすべての製品を返すため、コレクション クエリが正しく機能していません (このコレクションで実行しようとしている生の SQL については、以下を参照してください)。
これは製品モデルです:
これは、基本的にコレクションで使用するために探している PHPMyAdmin 生の SQL (動作します) です。
誰かがこの穴から私を助けてくれることを願っています。これを成し遂げるためだけに、私はインターネットの波を約12時間航海してきました.
~につJ
php - 他のテーブルから数えます
guid
nullではないデバイスの数を数えるのに問題があります。
ユーザーごとにすべてのショップを取得し、nulluser_id
ではないすべてのデバイスをカウントする必要があります。guid
私がするとき、それは動作します:
guid
ただし、 null ではない場所をカウントする必要があります。
reduce
また、別のアプローチがあるかどうかも知りたいです。
laravel - Laravelコレクションのn番目のアイテムにアクセスするには?
わざと重複した質問をすることで、すべてのルールを破っていると思います...
もう1つの質問には、受け入れられた回答があります。質問者の問題は明らかに解決しましたが、タイトルの質問には答えませんでした。
最初から始めましょう -first()
メソッドはおおよそ次のように実装されています:
$collection[0]
他の提案された方法を採用または使用するよりも明らかに堅牢です。
コレクション内に 20 個のアイテムがある場合でも、インデックス0
またはインデックスを持つアイテムがない場合があります。15
問題を説明するために、このコレクションをドキュメントから取り出してみましょう。
さて、 の n 番目の項目にアクセスするための信頼できる (できれば簡潔な) 方法はあり$keyed
ますか?
私自身の提案は、次のことです。
$keyed->last()
しかし、これはいつでも間違った項目 () を与えます$n > $keyed->count()
。n 番目のアイテムが存在しnull
、それが単に動作が好きではない場合、どうすればそれを取得できfirst()
ますか?
編集
明確にするために、このコレクションを考えてみましょう。
最初の項目は$col->first()
です。2番目を取得する方法は?
$col->nth(3)
を返す必要があります'c'
(または'c'
0 ベースの場合、それは と矛盾しfirst()
ます)。$col[3]
動作しません。エラーが返されるだけです。
$col->nth(7)
null
7 番目のアイテムがなく、4 つしかないため、戻る必要があります。$col[7]
動作しません。単に返され'd'
ます。
この質問は、「foreach オーダーで n 番目のアイテムを取得する方法は?」と言い換えることができます。一部の人にとってより明確であれば。