Неопределенное свойство: Illuminate\Database\Eloquent\Relations\BelongsTo

Я получаю эту ошибку Неопределенное свойство:

Illuminate\Database\Eloquent\Relations\BelongsTo::$name (View: C:\xampp\htdocs\ESchool\resources\views\front\index.blade.php)

и я не знаю, что не так

это часть моей индексной страницы, где я получаю сообщение об ошибке <

div class = "special_cource_text">
                        <a href = "../../../../../../Users/Khaldoun%20Alhalabi/Desktop/etrain/course-details.html"
                            class = "btn_4">{{$course->categories()->name}}</a>

а вот моя модель категории

    <?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    use HasFactory;
    protected $table = "categories"  ;
    protected $primaryKey = "id" ;
    public $timestamps = true ;
    protected $fillable =
    [
        'name' ,
    ] ;


    /**
     * Get all of the comments for the Category
     *
     * @return \Illuminate\Database\Eloquent\Relations\HasMany
     */
    public function courses()
    {
        return $this->hasMany(Course::class, 'foreign_key');
    }
}

а вот моя курсовая модель

    <?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Course extends Model
{
    use HasFactory;
    protected $table = "courses"  ;
    protected $primaryKey = "id" ;
    public $timestamps = true ;
    protected $fillable =
    [
        'name' ,
        'image' ,
        'price' ,
        'small_description' ,
        'description' ,

    ] ;
  public function categories()
    {
        return $this->belongsTo(Category::class);
    }
    public function trainers()
    {
        return $this->belongsTo(Trainer::class);
    }
    public function students()
    {
        return $this->belongsTo( Student::class );
    }
}

попробуйте получить доступ как {{$course->categories->name}}

John Lobo 27.03.2022 19:27

когда я это делаю, я получаю эту ошибку. Попытка получить имя свойства не-объекта

Khaldoun Al Halabi 28.03.2022 12:28
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
42
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

  1. Изменить public function categories() на public function category()
    (то же самое для других функций. BelongsTo возвращает один объект, поэтому имена функций должны быть в единственном числе)
  2. Я не вижу category_id в вашей модели, но я предполагаю, что он там есть.
  3. Не используйте скобки при доступе к свойствам связанного объекта, просто напишите
    $course->category->name

MrEvers спасибо за помощь, но ничего из вышеперечисленного не работает

Khaldoun Al Halabi 28.03.2022 12:29

@KhaldounAlHalabi, можете ли вы перечислить все свойства вашей модели курса?

MrEvers 28.03.2022 13:05

Я решил это, чувак, спасибо за твою помощь и доброту, и я опубликовал ответ

Khaldoun Al Halabi 28.03.2022 13:08
Ответ принят как подходящий

Я решил, что проблема была в имени внешнего ключа. Я назвал его cat_id, но он должен быть category_id нашел это в документах laravel https://laravel.com/docs/9.x/eloquent-relationships#один ко многим

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