私は雄弁とlaravel(フレームワークではない)に新しいですが、私はここで壁に当たっています。 異なるテーブルの条件でいくつかのクエリを実行する必要があるので、複数のクエリを作成するので、熱心な負荷(::with()
)は役に立たない。laravel堂々たる結合とオブジェクトとの関係のマッピング
いいえ、結合を使用します。しかし、その場合、Laravel/EloquentはObject-relationshipの概念を落として、単なる行を返すようです。 exempleによって :
私は
$allInvoicesQuery = Invoice::join('contacts', 'contacts.id', '=', 'invoices.contact_id')->get();
のようなものを設定し、$oneInvoice->invoiceFieldName
と$oneInvoice->contact->contactFieldName
のこれ以上の概念がありませんように
foreach ($allInvoicesQuery as $oneInvoice) {
... working with fields
}
としてルーピング私が取得する必要があればフィールドに直接連絡する$oneInvoice->contactFieldName
これに加えて、同じ名前の列wi (例えば、id
またはcreated_at
のように)上書きされます。
は、だから私の質問は以下のとおりです。
は私が右、このの解決策がないと仮定すると、私は「(選択::
請求書のようなoverwritting同じ名前を避けるために選択して、手動でフィールドを定義する必要がありますアムinvoice.created_at as invoice.create、contacts.created_at as contact_create)
複数の結合の場合、すべてのクエリ構築プロセスが長く複雑になります。しかし、主に、それはフレームワークがもたらすものではないモデルの関係作業をすべて破棄するだけです。
laravelまたはEloquent ORM内で動作するModelリレーションシップ型ソリューションはありますか?
こんにちは、助けてくれてありがとう、 しかし、ここでは "with"アプローチはうまくいきません。これにより、2つの個別のクエリが作成されます。 最初にすべての請求書を取得し、2番目の請求書は請求書のすべての連絡先を取得します。 実際、そうで複雑な条件を構築することはできません。 たとえば、連絡先の名前が「A」で始まる50〜75番目の請求書を取得することはできません – Hairmenu