1

私の問題は、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テーブルを終了できないことは知っていますが、このようなクエリ共通部分を使用する方法はありますか? 説明のためにすべてのコードを書きましたが、構文エラーがある可能性がありますが、それはコードではなく、ロジックに関するものです。ありがとう...

4

1 に答える 1