原始变量在 运行 Query Builder 之后被修改,同时将其分配给另一个变量

Original variable get's modified after running Query Builder while assigning it to another variable

首先,我创建了一个变量 $formsessions,我在其中存储了一个 Query Builder 对象(其中包含 50 个 Formsession 对象)。

$formsessions = FormsessionsRepository::get($user, $params);

在此之后,我 运行 在 $formsessions 上使用 groupBy() 和 pluck() ,其中 returns 3 个状态,我将其存储在 $formsession_statuses 变量中。

$formsession_statuses = $formsessions->groupBy('status')->pluck('status');

问题是 $formsessions 变量也在 groupBy() 和 pluck() 和 returns 3 个项目而不是 50 个之后被修改。有没有办法从 Query Builder 对象中提取项目并在不修改原始变量的情况下将它们存储在另一个变量中?

简答

$formsessionsClone = clone $formsessions;
$formsession_statuses = $formsessionsClone->groupBy('status')->pluck('status');

要获得独特的状态,请使用此

$formsession_statuses = $formsessions->unique('status')->pluck('status');

通过使用groupBy()pluck()将修改变量$formsessions。如果您不想这样,则必须从 $formsessions 定义另一个变量并对新变量应用 groupBy()pluck() 操作。

$formsessions = FormsessionsRepository::get($user, $params);

$formsessionsNew = clone $formsessions;

$formsession_statuses = $formsessionsNew->groupBy('status')->pluck('status');

详细了解 clone