向从数据库调用中提取的数据中添加新字段

时间:2019-05-06 23:44:56

标签: php arrays laravel eloquent

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

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

以下代码从数据库中提取特定于作物的信息;我如何在使用农作物组sql调用返回的数据“ array_merge”之前在$ 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;
    }

谢谢,汤姆。

2 个答案:

答案 0 :(得分:1)

如果您给&赋值,那么对值的任何更改都将直接保存在其地址上。

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

工作demo

这里是official doc中引用的简要说明。

答案 1 :(得分:0)

您可以简单地进行foreach

pattern1 <- "ate meat"  ##regular expression
mydata$pattern1 <- str_extract_all(mydata$event_desc, pattern1)   
##matching and extraction
mydata$pattern1 <- as.character(mydata$pattern1)
pattern1 <- strsplit(mydata$pattern1, split = ",")
pattern1 <- data.frame(ID = rep(mydata$doc_id, sapply(pattern1, 
length)), pattern1 = unlist(pattern1))