У меня есть функция для получения пропуска языкового номера, чтобы получить запись языковых категорий для целей API.Я использую оператор запроса к базе данных, чтобы выбрать таблицу категорий, и присоединяюсь к языковой таблице категорий, чтобы получить идентификатор категории, parent_id и имя (указанный язык).При выполнении возвращают ошибку и выбирают базовый SQL, преобразующий значение языка в строку (например, languages_id
= 1
).Я много гуглю и понятия не имею, что не так.Может кто-нибудь посоветовать, как решить.Большое спасибо.
Я попытался скопировать базовый SQL в MySQL Workbench и удалить languages_id
= 1
-> languages_id
= 1, который может работать правильно.Я предполагаю, что 1
вызвало ошибку.
Пример кода:
private function getCategories($language) {
$categories = DB::table('categories')
->select(DB::raw('categories.id, categories.parent_id, categories_translation.name'))
->join('categories_translation', function($join) use ($language) {
$join->on('categories_translation.categories_id', '=', 'categories.id');
$join->on('categories_translation.languages_id', '=', $language);
})
->where([
['parent_id' ,'=', '0'],
['categories.id', '=', $id]
])
->get();
return $categories;
}
Ошибка возврата преобразованного SQL:
"SQLSTATE [42S22]: столбец ненайдено: 1054 Неизвестный столбец '1' в 'предложении' (SQL: выберите Categories.id, Categories.parent_id, Categories_translation.name из categories
Внутреннее объединение categories_translation
в categories_translation
. categories_id
= categories
.id
и categories_translation
. languages_id
= 1
где (parent_id
= 0 и categories
. id
= 1)) "