@skajtersen

Как вставить значения в таблицу по внешнему ключу другой таблицы?

Есть две таблицы
Logs  (log_id (PK), query_type (FK from query_type_id)
QueryTypes (query_type_id (PK), query_type (UNIQUE))


Есть цикл для вставки данных, внутри которого выполняется
$types = new QueryTypes();
 $types->query_type = нужные данные;
 $types->save();

 $logs = new Logs();
 $logs->query_type = $types->query_type_id;
 $logs->save();


Из-за уникального значения query_type вставка в таблицу с логами производится единожды, после того, как уникальное значение встретилось в первый раз. Подскажите, как предварительно получить значение query_type_id для вставки в таблицу с логами.
  • Вопрос задан
  • 174 просмотра
Решения вопроса 1
qonand
@qonand
Software Engineer
если правильно понял Вашу проблему, тогда в самом простом варианте так:
$types = find()->where(['query_type' => 'нужные данные'])->one();
if (is_null($types)) {
    $types = new QueryTypes();
    $types->query_type = 'нужные данные';
    $types->save();
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
maximw
@maximw
Знаю как это сделать на чистом SQL (с PDO или MySQLi), но не знаю как с вашей ОРМ.
Это было бы примерно так:
$mysqli->query('INSERT INTO `QueryTypes` SET `query_type` = "нужные данные" ON DUPLICATE KEY UPDATE `id` = LAST_INSERT_ID(`id`)'); 
//echo $mysqli->insert_id; тут будет ID новой записи или той которая была обновлена по уникальному ключу

 $logs = new Logs();
 $logs->query_type = $mysqli->insert_id;
 $logs->save();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы