私の問題は、Laravel db クエリに関するものです。通常、すべての oop ユーザーは親クラスで自分の共通変数をプライベート プロパティで定義し、oop の理由から他の子クラスからそれを使用します - 再利用性...そして今、私の問題は、プライベートで DB クエリの変数を定義するときです。キー、元の共通クエリ部分を変更したくないので、ゲッターメソッドを(通常の人のように)記述しますが、常に参照によって呼び出します。
例 (親クラス):
$this->userConfirmedPackageData = DB::table('payments')
->join('users', 'users.id', '=', 'payments.user_id')->
*.....continue with more join*
->join('subjects', 'subjects.id', '=', 'classroom_subject.subject_id')
->where(['payments.confirmed' => 1, 'payments.user_id' => $this->currentUser->getUserId()]);
クエリの共通部分を定義した後、他のすべての子クラスクエリのテンプレートのように使用したいのですが、以下のように同じクラスで使用する場合 (子クラス):
$firstQuery = $this->getUserConfirmedPackageData()->join("aTable")->where("something.id",3)->get(["something.id"]);
$secondQuery = $this->getUserConfirmedPackageData()->join("bTable")->where("somethingDifferentTable.user_id",1111)->take(5)->get(["somethingDifferentTable.name"]);
最初の get メソッドの後、貴重なプライベート変数が変更されます (スタックします)。
「get」と言うまでDBテーブルを終了できないことは知っていますが、このようなクエリ共通部分を使用する方法はありますか? 説明のためにすべてのコードを書きましたが、構文エラーがある可能性がありますが、それはコードではなく、ロジックに関するものです。ありがとう...