ErrorException (E_ERROR) Попытка получить свойство 'title' необъекта - Laravel 5.7 - PullRequest
0 голосов
/ 26 сентября 2019

Я использую laravel 5.7, есть отношение, что каждый студент принадлежит одной программе, и я пытаюсь получить конкретное название программы студента, используя {{ $student->programs->title }}

Но есть ошибка

ErrorException (E_ERROR) Попытка получить свойство 'title' необъекта (представление: D: \ Work \ UnitOne \ BackEnd \ UniLara \ resources \ views \ admin \ Students \ index.blade.php)

Это мой Режим студента l

<?php

class Student extends Model {

    protected $fillable = [
        'name', 'country', 'program_id', 'image'
    ];

    public function programs() {
        return $this->belongsTo(Program::class);
    }
}

и это мои программы Модель

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Program extends Model {

    protected $fillable = [
        'title', 'description', 'image'
    ];

    public function students() {
        return $this->hasMany(Student::class);
    }
}

Вот мой СтудентКонтроллер

<?php

namespace App\Http\Controllers;

use App\Http\Requests\Students\CreateStudentsRequest;
use App\Http\Requests\Students\UpdateStudentsRequest;
use App\Program;
use App\Student;
use Illuminate\Http\Request;

class StudentsController extends Controller {

    public function index() {
        return view('admin.students.index')->with('students', Student::paginate(5));
    }
}

и это последнее, что лезвие, вот где у меня возникла проблема, когда я звоню {{ $student->programs->title }}

@foreach($students as $student)
    <tr>
        <td><img src="{{ asset($student->image) }}" alt="{{ $student->image }}"></td>
        <td>{{ $student->name }}</td>
        <td>{{ $student->country }}</td>
        <td>{{ student->programs->title }}</td>
    </tr>
@endforeach

1 Ответ

0 голосов
/ 26 сентября 2019

Измените имя вашего отношения.Laravel ищет столбец в базе данных, например relation_primarykey, если вы не указали внешний ключ в определении отношения.в вашем случае ваше отношение равно programs, но столбец базы данных равен program_id.дополнительный s вызывает проблему.Поэтому используйте любой из следующих вариантов:

public function program()
{
    return $this->belongsTo(Program::class);
}

Или

public function programs()
{
    return $this->belongsTo(Program::class, 'program_id');
}

Документы Laravel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...