У меня есть 2 таблицы:
1. Users
2. Tags
tags_users — это сводная таблица.
Эти таблицы имеют отношение «многие ко многим».
Почему addField
в моем UserCrudController
делает слишком много запросов, когда результат доступен из одного запроса?
Пример:
Когда я редактирую пользователя с несколькими тегами, addField
делает следующие запросы:
select * from `tags` where `tags`.`id` = '11' limit 1;
select * from `tags` where `tags`.`id` = '13' limit 1;
select * from `tags` where `tags`.`id` = '14' limit 1;
select * from `tags` where `tags`.`id` = '57' limit 1;
Я понимаю, что select2_from_ajax
должен делать запрос AJAX каждый раз, когда я получаю новую информацию, но как насчет того, чтобы просто получить первый выбранный результат из объекта User?
Вот так: User::find(1)->tags
. Это возвращает коллекцию тегов для пользователя и позволяет избежать нескольких запросов для получения одного и того же результата.
Это мой UserCrudController:
http://sandbox.onlinephpfunctions.com/code/023c2eb5749180967efe0a24dbb7125d95815537
Это часть кода:
$this->crud->addField([ // Select2Multiple = n-n relationship (with pivot table)
'label' => 'Tags',
'type' => 'select2_from_ajax_multiple_custom',
'name' => 'tags', // the method that defines the relationship in your Model
'entity' => 'tags', // the method that defines the relationship in your Model
'attribute' => 'name', // foreign key attribute that is shown to user
'model' => Tag::class, // foreign key model
'data_source' => route("search.tags"),
'placeholder' => "Select a city",
'minimum_input_length' => 2, // minimum characters to type before querying results
'pivot' => true, // on create&update, do you need to add/delete pivot table entries?
]);
addField
? Если вы не возражаете, также поделитесь снимком экрана вашего обработанного шаблона. - person Oluwafemi Sule   schedule 07.10.2017