Почему мое Красноречивое Отношение не заполняет все мои объекты?

#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 where measurement_types . type_id in (1, 2, 3))

2. Я отредактировал свой вопрос о том, как у меня теперь есть код.

3. Модель полей измерений должна иметь функцию measurement_type

4. Модель типа измерения должна иметь функцию measurement_field

5. Я добавил схему, вам также нужны мои другие модели?