Рубрики
Uncategorized

Как получить нужные вам данные без двухуровневого для каждого

Автор оригинала: David Wong.

1. При ведении бизнеса с областью настройки таблицы “регион” и страной настройки таблицы “страна”, перечислите поля страны, хотите знать соответствующий регион и знать детали этого региона, некоторые люди будут использовать двухслойный метод записи для каждого, который, конечно, невелик по количеству, без проблем, но после прохождения определенного объема данных этот метод записи будет ругаться!

2. Бросьте метод с использованием laravel , на самом деле, вы можете рассмотреть идею использования сопоставления ключей массива.

3. Например, сначала узнайте все данные по стране. Когда страна имеет ассоциацию идентификатора области поля, это первичный ключ таблицы регионов. (предлагается, чтобы название региона в то же время было избыточным в таблице стран). Конечно, у этой антипарадигмы есть преимущества и недостатки, которые здесь не будут рассмотрены. Вы сами можете байду.

Проверьте национальную таблицу, извлеките соответствующую область [идентификатор] и удалите ее дубликат

Используйте результирующий набор идентификаторов этой области [ID] для запроса, где в таблице областей

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

Наконец, данные по странам, полученные с помощью foreach, могут быть сопоставлены с помощью сопоставления ключей массива.

4. Код присвоения выглядит следующим образом:

$country = DB::table("setting_country")->get();
$ids = array_unique($country->pluck('area_id')->toArray());
$some_other_infos = SettingAreaModel::select()
->whereIn('id', $ids)
->get()
->toArray();
$new_array = array_column ($some_other_infos,null,"id");
foreach ($country as $key=>$item) {
    $country[$key]->area_info = $new_array[$item->area_id];
}

Код просто пишется по желанию. Не рекомендуется использовать БД в фасадах при разработке. Более элегантно использовать идею одноэлементного режима в области предложений.