Предисловие
hasOne и hasMany-это специальные функции Yii2 для запросов на объединение нескольких таблиц. Они рекомендуются при использовании запросов на объединение нескольких таблиц. Почему? Поскольку этот способ сопоставления результатов запроса сохранит собственную функцию сортировки заголовков Yii2, а также значение хранения идентификатора ввода в столбце флажка, относительно того, нужно ли извлекать другие преимущества, автор обнаружил эти два часто используемых преимущества. Другие связанные запросы, такие как запросы к базе данных yii или собственные запросы операторов SQL, недоступны. Когда запросы отображаются в списке, заголовок таблицы становится черным.
У Yii2 есть один, есть множество запросов на ассоциацию с несколькими таблицами, независимо от того, могут ли документы или статьи легко найти родительскую ссылку, но почему автор написал эту статью, идея проста, потому что в предыдущей информации я не видел использования запроса на ассоциацию “многие ко многим”, не повторяйте другие, но и сами повторяйтесь, эта статья посвящена запросу на ассоциацию “многие ко многим”. Использование запроса увеличит ваши знания.
анализ требований
1. Используйте инструкцию запроса для отображения всех данных в списке. Список содержит отношения “один к одному”, “один ко многим” и “многие ко многим”.
2. Вы не можете нарушить собственную функцию сортировки заголовка Yii2 и значение хранения идентификатора ввода в столбце Флажок.
Эскизный проект
1. Сортировка заголовков “Один к одному”, “один ко многим”, “многие ко многим”.
2. Значение идентификатора ввода в столбце Флажок.
анализ кода
Многие ко многим Пример: У клиента может быть более одной этикетки, а у этикетки может быть более одного клиента.
1. Добавьте следующий код inT Sales (модель таблицы клиентов):
public function getcommon_tag() { Return $this - > hasMany (CommonTag:: className (), ['itemid'=>'t_id'] - > onCondition (['idtype'=> content]) - > join With (['tag']); }
Note: Here the common_tag table is the intermediate table, and the common_tag intermediate table is associated with the customer table with hasMany, followed by joinWith (['tag']) associated tag table. OnCondition is a conditional method.
2. Добавьте следующую таблицу тегов ассоциации кода в CommonTag (модель промежуточной таблицы) и используйте ее.
public function gettag() { return $this->hasOne(Tag::className(), ['id'=>'tagid']); }
3. Добавьте следующую промежуточную таблицу common_tag ассоциации кода в поиск по продажам (модель поиска клиента): $query->joinWith([‘common_tag’]);
4. Выходной код страницы выглядит следующим образом:
[ 'attribute' => 'tag_id', 'value' => function ($model) { $_tag=$model->getRelatedRecords()['common_tag']; if(!empty($_tag)){ $tagName=""; foreach ($_tag as $key => $value) { $tagName.=$value['tag']['name'].'/'; } return rtrim($tagName,'/'); } }, ],
Примечания: $model - > getRelatedRecords () используется для получения [_related: yii db BaseActiveRecord: private]
Значения массива.
Один ко многим 1. Множество функций, задействованных в предыдущем многопользовательском режиме, относится к использованию “один ко многим”. Чтобы добиться использования “один ко многим”, вы можете удалить соединение С обратной стороны. Другие конфигурации и методы вывода такие же.
Один на один 1. Использование один на один также упоминалось ранее. Имеет один принадлежит к индивидуальному использованию. Конфигурация такая же, как у многих, которая здесь не описана подробно.
Вопросы, требующие внимания
1. Когда значение связанного запроса не может быть получено с помощью следующего вывода кода (common_tag.name), должно быть, в вашей таблице клиентов есть это поле имени, и значение пусто. После переименования он будет отдавать приоритет выходу основного поля таблицы. Решение состоит в том, чтобы использовать: $model – > getRelatedRecords ().
[ 'attribute' => 'tag_id', 'value' => 'common_tag.name' ]
Сопутствующая информация
Запрос на ассоциацию нескольких таблиц в Yii2