Добавление нового поля к данным, извлеченным из вызова базы данных - PullRequest
0 голосов
/ 07 мая 2019

В рамках процедуры поиска определенного урожая я делаю два вызова в одну и ту же таблицу базы данных, объединяю результаты и отправляю их по линии. Первый вызов ищет данные, относящиеся к искомому урожаю (например, «бобы»). Второй вызов ищет данные, относящиеся к группе культур этой культуры (например, бобовые).

Данные, возвращаемые при первом вызове, будут более релевантными / сфокусированными, чем при втором вызове. Я хочу добавить идентификатор в соответствующие наборы данных, который отражает это, чтобы впоследствии я мог отсортировать / представить данные на основе релевантности в моем компоненте Vue.

Следующий код извлекает информацию о конкретной культуре из базы данных; Как я могу добавить / вставить / добавить новую переменную (например, "релевантность" = 1) к каждой строке в $ factheets, прежде чем я "array_merge" ее с данными, возвращаемыми из вызова sql группы урожая?

(Ради упрощения я не включил код, который определяет значение crop.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 ]

1 голос
/ 07 мая 2019

Если вы присвоите & значению, то любые изменения, которые произойдут со значением, будут напрямую сохранены на его адресе.

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

Рабочая демо .

Здеськраткое объяснение ссылок в официальном документе .

0 голосов
/ 07 мая 2019

вы можете просто сделать foreach

foreach($factsheets as $key => $factsheet){
 $factsheet['relevance'] = 1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...