修改生成的DB Raw laravel查询中的数据

时间:2017-11-02 17:17:43

标签: php database laravel eloquent

我有一个像这样的原始查询:

$models = DB::select(DB::raw("SELECT ... etc));

我想修改生成的集合中的数据(我不认为它是一个集合)。

无论如何,假设我想将所有$ model->图片修改为'whatever / path'之类的内容。 $模型 - >图像

我尝试了这样,它没有修改任何东西但它没有吐出任何错误:

foreach($models as $model){

   $model['picture'] = '/images/models/' . $model['picture'];

}

我错过了什么?

1 个答案:

答案 0 :(得分:1)

好吧,对我来说,你应该使用Eloquent来做这样的事情就足够了:

$models = YourModel::all();

foreach($models as $model){

   $model->picture = '/images/models/' . $model->picture;
   $model->save(); // here you save it to database
}

但是老实说,将此路径添加到数据库并没有任何意义。您可以为您的Eloquent模型使用访问器,并假设您在任何地方使用Eloquent都不会触摸数据库。

修改

好的,所以对于这种情况(来自评论)问题是你不在这里使用引用,你应该像这样使用它:

foreach($models as &$model){
   $model['picture'] = '/images/models/' . $model['picture'];
}
unset($model)

使其真正保存在模型数组中。