php666
@php666
PHP-макака

Как сделать выборку моделей из нескольких таблиц?

Доки про связи читал, но не ясно.
Есть сущность/таблица Document.
Есть сущность/таблица DocumentType - по факту, это лишь справочник.
Document имеет внешний ключ на таблицу DocumentType

Я пытался сделать выборку:
return $this->model
            ->with('document_types')
            ->orderBy($orderBy, $sort)
            ->paginate($paged);

Но возникает ошибка: Call to undefined relationship [document_types] on model [App\Models\Docflow\Document].
Думал в модели Document объявить связь:
public function document_types()
    {
        return $this->hasOne(DocumentType::class, 'type_id', 'id');
    }

получил это:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'document_types.type_id' in 'where clause' (SQL: select * from `document_types` where `document_types`.`type_id` in (1, 3, 5, 18, 19, 20, 21, 22, 23, 24))

И до меня дошло, что связь Document->DocumentType скорее всего не является отношениями, которые описаны в документации. Это просто ссылка на справочник, а справочник ничего не знает о сущности. Я прав?

Если да, то как обрабатывать такие ситуации, хотелось бы во view из объекта документа иметь объект ТипаДокумента.
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
@Result007
P|-|P
Думаю вы просто перепутали аргументы:
public function document_types()
{
    return $this->hasOne(DocumentType::class, 'id', 'type_id');
}


P.S. думаю сам метод связи можно назвать просто type
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы