【问题标题】:modify data in resulting DB Raw laravel query修改生成的 DB Raw laravel 查询中的数据
【发布时间】:2017-11-02 17:17:42
【问题描述】:

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

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

我想修改结果集合中的数据(虽然我不认为它是一个集合)。

无论如何,假设我想将所有 $model->picture 修改为 'whatever/path' 之类的东西。 $model->图片。

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

foreach($models as $model){

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

}

我错过了什么?

【问题讨论】:

    标签: php database laravel eloquent


    【解决方案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)
    

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

    【讨论】:

    • 不,我不想在数据库中进行修改。我想即时修改它以将数据传递给视图。否则图片不会显示,因为路径不正确。但是,是的,我可以直接将路径添加到视图...
    • hmm unset($model) 不应该在循环内吗?
    • @Chriz74 不,这是令人不安的参考。如果您有疑问,请查看 PHP 手册 - php.net/manual/en/control-structures.foreach.php
    猜你喜欢
    • 1970-01-01
    • 2018-04-15
    • 1970-01-01
    • 2021-03-02
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多