Laravel 更新具有多行的模型

Laravel 更新具有多行的模型,laravel,eloquent,lumen,laravel-collection,Laravel,Eloquent,Lumen,Laravel Collection,我有一个对象模型,它有多行,类似于通过此查询获得的结果: $cities = City::whereIn('id' , [1,2,3])->get(); 我想做的是用相同的值更新每一行,而不使用each,因为each正在对每一行进行查询,所以在上面的查询中我将有3个查询 而不是这样做: $cities->each->update(['name' => 'test']); 我想这样做,因为我已经有了模型对象,但它不起作用: $cities->update(['na

我有一个对象模型,它有多行,类似于通过此查询获得的结果:

$cities = City::whereIn('id' , [1,2,3])->get();
我想做的是用相同的值更新每一行,而不使用
each
,因为
each
正在对每一行进行查询,所以在上面的查询中我将有3个查询

而不是这样做:

$cities->each->update(['name' => 'test']);
我想这样做,因为我已经有了模型对象,但它不起作用:

$cities->update(['name' => 'test']);
相反,我必须这样做才能让它工作:

City::whereIn('id' , $cities->pluck('id'))->update(['Avatar' => 'test']);
我的问题是,;为什么我不能用这个:

$cities->update(['name' => 'test']);
当您使用
->get()
方法时,您得到的不是一个模型,而是一组模型

没有多行模型这样的东西。模型只有一行。

当您使用
->get()
方法时,您得到的不是一个模型,而是一个模型集合


没有多行模型这样的东西。模型只有一个“行”。

中有一个示例:

请参见批量更新部分

因此,在您的情况下,查询必须是:

City::whereIn('id' , [1,2,3])
    ->update(['name' => 'test']);

下面是一个例子:

请参见批量更新部分

因此,在您的情况下,查询必须是:

City::whereIn('id' , [1,2,3])
    ->update(['name' => 'test']);

City::其中('id',[1,2,3])->更新(['name'=>'test'])我知道我可以做到这一点,但我只是用这段代码来说明我的观点,我的对象已经构建在一个服务中,我将该对象传递给另一个服务来执行更新方法。答案的关键是,在没有雄辩的情况下,你实际上会怎么做?
City::where('id',[1,2,3])->update(['name'=>'test]我知道我可以做到这一点,但我只是用这段代码来说明我的观点,我的对象已经构建在一个服务中,我将该对象传递给另一个服务来执行更新方法答案的关键是,在没有雄辩的情况下,你会如何执行?我知道这是一个返回的集合,但我只想找到一种方法来对返回的对象进行更新,我同意到目前为止还没有“离开”,但也许有,所以我问了我的问题,你们可以使用laravel宏:或者在模型中创建静态函数,接收一个集合和一个更新数组。在这个静态函数中,你可以遍历所有的城市并更新它们。如果我需要,我可以使用$cities->each。。。但是我认为使用宏是一个很好的实现方法,所以我会考虑一下。但是感谢您的帮助,如果您想使用一个mysql请求,那么您必须使用
City::where('ID',$cities->pulk('ID'))->update(['Avatar'=>'test'])
在宏或静态函数中,我认为您的解决方案存在问题,因为您无法确定
ID或ID
是您的主键,因此您需要再次考虑此解决方案。我知道这是一个返回的集合,但我只想找到一种对返回的对象进行更新的方法,我同意到目前为止还没有“离开”,但也许有,所以我问了我的问题,你们可以使用laravel宏:或者在模型中创建静态函数,接收一个集合和一个更新数组。在这个静态函数中,你可以遍历所有的城市并更新它们。如果我需要,我可以使用$cities->each。。。但是我认为使用宏是一个很好的实现方法,所以我会考虑一下。但是感谢您的帮助,如果您想使用一个mysql请求,那么您必须使用
City::where('ID',$cities->pulk('ID'))->update(['Avatar'=>'test'])
在宏或静态函数中,我认为您的解决方案存在问题,因为您无法确定
ID或ID
是您的主键,因此您需要再次考虑此解决方案