Ошибка в отношениях между двумя таблицами в laravel

Я разрабатываю проект электронной коммерции, в котором у меня есть следующие таблицы:

1. Таблица продуктов :

  • ID (целое число)
  • Заголовок (строка)
  • ткань (целое без знака)
  • created_at (отметка времени)
  • Я также использовал этот код ниже при миграции.
$table->foreign('fabric')->references('id')->on('fabrics');

2. Стол из ткани

  • ID (целое число)

  • Название (строка)

Мои модели:

    class Product extends Model{
        public function fabric(){
            return $this->hasOne('App\Fabric','id', 'fabric');
        }
    }

    class Fabric extends Model{
            public function products(){
                return $this->belongsTo('App\Product', 'fabric', 'id');
            }
        }

Я хочу, чтобы продукт ткань отображался с помощью этого

      {{ $product->fabric()->title }}

Однако он возвращается

Object of class Illuminate\Database\Eloquent\Relations\HasOne could not be converted to string

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
45
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

прежде всего, я предполагаю, что вы определили массив $fillable в своей модели fabric с помощью title вы должны заменить

  {{ $product->fabric()->title }}

по

@isset($product->fabric)

       {{ $product->fabric->title }}
@endisset

это показывает Trying to get property 'title' of non-object.

Ishaan 28.07.2019 17:24

поскольку в вашей базе данных нет ни одной ткани, связанной с этим продуктом, вы должны добавить if test, чтобы проверить, действительно ли у вас есть ткань, связанная с этим продуктом.

Thamer 28.07.2019 17:32

Вы должны либо заменить {{ $product->fabric()->title }} на {{ $product->fabric->title }}

или

Вы можете заменить его на $product->fabric()->get()->title;

Что вы делаете с исходной строкой кода, так это пытаетесь распечатать отношение, а не возвращаемый объект.

Он показывает Trying to get property 'title' of non-object.

Ishaan 28.07.2019 17:26

Хм, попробуйте использовать var_dump($product->fabric), чтобы увидеть, является ли то, что вы возвращаете, массивом. В этом случае это не объект, и к нему следует обращаться с помощью чего-то вроде $product->fabric["title"]

Jason 28.07.2019 17:29

Спасибо за ваше время, но я получил свою ошибку, на самом деле я использую то же имя для функции, а также для свойства, то есть ткань.

Ishaan 28.07.2019 17:31
Ответ принят как подходящий

Нельзя использовать то же имя как для свойства, так и для функции, что я там делаю, я использую ткань как для функции, так и для свойства.

Поэтому я изменил столбец таблицы с ткань на идентификатор_ткани.

Оно работает!

Другие вопросы по теме