【问题标题】:Adding a new field to data extracted from a database call向从数据库调用中提取的数据添加新字段
【发布时间】:2019-05-06 23:44:55
【问题描述】:

作为特定作物搜索例程的一部分,我对同一个数据库表进行两次调用,合并结果并将它们发送到下一行。第一个调用查找与搜索到的作物相关的数据(例如“beans”)。第二个调用查找与该作物的作物组相关的数据(例如豆类)。

第一次调用返回的数据将比第二次调用返回的数据更相关/更集中。我想向反映这一点的各个数据集添加一个标识符,以便我随后可以根据我的 Vue 组件中的相关性对数据进行排序/呈现。

以下代码从数据库中提取特定作物的信息;在我“array_merge”它与从crop-group sql调用返回的数据之前,如何向$factsheets中的每一行添加/插入/附加一个新变量(例如“relevance”= 1)?

(为了简单起见,我没有包含根据用户输入的作物名称确定crops.id 值的代码。)

public function getFactsheets($cropId){
    $factsheets = Factsheet::whereIn('crop_id',$cropId)
      ->join("crop_factsheet as cf","factsheets.id","=","cf.factsheet_id")
      ->join("crops as crops","crops.id","=","cf.crop_id")
      ->select('crops.name','title', 'factsheets.id', 'shortdesc', 'shortimg', 'factsheets.slug')
      ->orderBy('crops.name')
      ->get()->toArray();
      return $factsheets;
    }

谢谢,汤姆。

【问题讨论】:

    标签: php arrays laravel eloquent


    【解决方案1】:

    如果您将& 分配给 value,那么 value 发生的任何更改都将直接保存在其地址中。

    foreach($factsheets as $key => &$factsheet){
     $factsheet['relevance'] = 1;
    }
    

    工作demo

    这里是official doc中引用的简明解释。

    【讨论】:

    • 优秀。谢谢你。我很欣赏你的回答。干杯/汤姆
    【解决方案2】:

    你可以简单地做一个 foreach

    foreach($factsheets as $key => $factsheet){
     $factsheet['relevance'] = 1;
    }
    

    【讨论】:

    • 谢谢。您的解决方案在“屏幕外”不起作用,但将其第二行修改为 $factsheet[$key]['relevance'] = 1 就可以了。干杯/汤姆
    猜你喜欢
    • 1970-01-01
    • 2016-01-11
    • 2017-08-07
    • 2021-11-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-06
    • 1970-01-01
    相关资源
    最近更新 更多