Laravelwhere
集合方法是否修改集合?
在Laravel 文档中,您可以阅读以下内容:
几乎每个方法都返回一个新的 Collection 实例,允许您保留集合的原始副本
唯一对修改集合有警告的方法是transform
和forget
但我有这个代码:
$descriptions = Description::where('description', $request->description);
if ($descriptions->count()) {
$descriptionsWithSameUnit = $descriptions->where('unit_id', $request->unit);
if ($descriptionsWithSameUnit->count()==0) {
$descriptionsWithAnotherUnit = $descriptions->where('unit_id', '!=', $request->unit);
if ($descriptionsWithAnotherUnit->count()) {
...
并且集合在第一个 where 所以$descriptionsWithAnotherUnit
总是空的之后被修改,因为在那一点上集合只有 where 的记录unit_id == $request->unit
。这是框架或文档中的错误吗?
以及由此产生的问题:我能做些什么来保留原始对象的副本而不再次从数据库中检索?我试过这个:
$descriptions = Description::where('description', $request->description);
if ($descriptions->count()) {
$descriptionsWithSameUnit = $descriptions;
$descriptionsWithSameUnit->where('unit_id', $request->unit);
...
但是$descriptions
当我将where
方法应用于$descriptionsWithSameUnit
对象时,对象也会被修改