我的问题是关于 Laravel 数据库查询。通常,每个 oop 用户在父类中使用私有属性定义他/她的公共变量,并从其他子类中使用它,因为 oop 原因 - 可重用性......现在我的问题是当我为带有私有的 DB 查询定义一个变量时关键,我写了一个getter方法(就像一个普通人一样),因为我不想改变原来的公共查询部分,但它总是通过引用调用。
示例(父类):
$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”之前无法完成,但是有没有办法像这样使用查询公共部分?我写了所有的代码来解释,它们可能有语法错误,但这不是关于代码而是关于逻辑的。谢谢...