#sql #laravel #eloquent
Вопрос:
У меня есть таблица «типы», которая содержит только идентификатор и имя, отношение работает с первым объектом, но возвращает null
следующие объекты. Вот как выглядит мой JSON:
{"id":1,"type_id":1,"name":"test1","enabled":1,"measurement_type":{"id":1,"name":"test"}}, {"id":2,"type_id":2,"name":"test2","enabled":0,"measurement_type":null}]}, {"id":3,"type_id":1,"name":"test3","enabled":1,"measurement_type":null}]}
Вот мои родственники:
Модель полей измерений
public function measurement_type() { return $this-gt;belongsTo(MeasurementType::class, 'type_id'); }
Модель типов измерений
public function measurement_type() { return $this-gt;belongsTo(MeasurementData::class); }
В этой модели у меня уже есть функция measurement_field, которая объявляет принадлежность к данным измерения (другая модель) Итак, как мне назвать новую функцию с помощью множества типов?
Мой Контроллер:
public function index() { return JsonResource::collection(MeasurementField::with('measurement_type')-gt;get()); }
Все они содержат данные, как вы можете видеть из JSON, отношение просто ничего с ними не делает.
Мои миграции:
Schema::create('measurement_types', function (Blueprint $table) { $table-gt;id()-gt;autoincrement(); $table-gt;string('name'); });
Schema::create('measurement_fields', function (Blueprint $table) { $table-gt;id()-gt;autoincrement(); $table-gt;foreignId('type_id')-gt;constrained('measurement_types'); $table-gt;string('name')-gt;unique(); $table-gt;boolean('enabled'); });
Комментарии:
1. вы пробовали мое решение?
Ответ №1:
Я думаю, что у вас measurement_type
их много measurement_field
.
и я думаю, вы должны включить это в свою MeasurementField
модель:
public function measurement_type() { return $this-gt;belongsTo(MeasurementType::class, 'type_id'); }
Комментарии:
1. Я превратил его в hasMany, но я получаю это в качестве ответа : SQLSTATE[42S22]: Столбец не найден: 1054 Неизвестный столбец «типы измерений.идентификатор типа» в предложении «где» (SQL: выберите * из
measurement_types
wheremeasurement_types
.type_id
in (1, 2, 3))2. Я отредактировал свой вопрос о том, как у меня теперь есть код.
3. Модель полей измерений должна иметь функцию measurement_type
4. Модель типа измерения должна иметь функцию measurement_field
5. Я добавил схему, вам также нужны мои другие модели?