Поэтому я довольно долгое время пытаюсь использовать базовый красноречивый контент в Slim Framework 2. Это не мой первый вопрос, но я надеюсь, что на это можно ответить, в отличие от предыдущего: использование полиморфных отношений в Eloquent для расширения модели
Я работаю над простой химической базой данных для отслеживания своего университета. У меня есть таблица Chemicals с колонкой company_id, которая соотносится с таблицей с названием компании с двумя столбцами, идентификатором и компанией. chemicals.company_id – это внешний ключ, ссылающийся на company.id.
(Это, наряду с несколькими другими, такими как комната и местоположение, началось как Enums, но быстро стало очевидно, что пользователи должны были бы добавить к ним. Редактирование столбца DB для добавления перечисления, очевидно, не является практической идеей .)
В Chemical я имею:
public function company() { return $this->hasOne('Lab_Chemicals\Chemical\company'); }
И в компании у меня есть:
public function chemical() { return $this->belongsTo('Lab_Chemicals\Chemical\chemical'); }
Они оба находятся в том же пространстве имен (Lab_Chemicals \ Chemical), и сами по себе я могу сделать
$chemicals = $app->chemical->get();
а также
$company = $app->company->get();
и получить правильный список, чтобы основы были настроены правильно, но если я попытаюсь это сделать:
$company = chemical::find(1)->company;
Я получаю Slim Application Error:
Тип: Illuminate \ Database \ QueryException Код: 42S22 Сообщение: SQLSTATE [42S22]: Столбец не найден: 1054 Неизвестный столбец 'company.chemical_id' в 'where clause' (SQL: выберите * из company
где company
. chemical_id
= 1 и company
. chemical_id
не является нулевым пределом 1)
Это подводит меня к моему реальному вопросу. Разве это не назад? Почему он ищет химическое вещество в компании? Я знаю, что это то, что он говорит в документах https://laravel.com/docs/4.2/eloquent#relationships : «Обратите внимание, что Eloquent предполагает внешний ключ отношения, основанный на имени модели. В этом случае Предполагается, что модель телефона использует внешний ключ user_id ».
Я бы ожидал, что он найдет компанию, где находится химическая компания.pany_id = company.id. Где ошибка в моем способе мышления и что я могу сделать, чтобы она работала, как ожидалось? благодаря