Отображаемое имя из идентификатора дает мне "Попытка получить свойство 'proj_title' не-объекта" - PullRequest
1 голос
/ 16 апреля 2019

У меня есть форма, в которой я отправляю идентификатор из «проекта»;

    <div class="form-group">
        <label for="Project">Project</label>
        <select name="proj_id" class="form-control">
            @if (count($project) == 0)          
            <option>There are no projects.</option>
            @else
                @foreach($project as $project)
                    <option value="{{$project->proj_id}}">{{$project->proj_title}}</option>
                @endforeach
            @endif

        </select>
    </div>

Эта часть работает правильно, она вставляет proj_id в базу данных, но когда я возвращаюсь к своему индексу, яхотите отобразить имя проекта с этим идентификатором.Это мой индекс;

<tbody class="">
        @foreach ($task as $task)
        <tr>
            <td>{{$task->task_id}}</td>
------->    <td>{{$projects->find($task->proj_id)->proj_title}}</td>
            <td>{{$task->task_title}}</td>
            <td>{{$task->task_desc}}</td>
            <td>{{$task->status}}</td>
            <td>{{$task->priority}}</td>
            <td>{{$task->created_by}}</td>
            <td>{{$task->created_at}}</td>
            @if (Auth::user()->role=='admin')
            <td>

Как таковой, он дает мне ошибку в заголовке.

Если я изменяю эту строку на $task->proj_id, она отображает это без проблем.

Также это моя индексная функция в TaskController:

    public function index()
    {
        return view('tasks.index', [
            'task' => Task::all(),
            'projects' => Project::all(),
        ]);
    }

А это мои отношения: Модель проекта;

class Project extends Model
{
    protected $primaryKey = 'proj_id';
    protected $fillable = ['proj_title','proj_desc','client_id','created_by'];



    public function client (){
        return $this->belongsTo('App\Client');
    }
    public function tasks (){
        return $this->hasMany('App\Task');
    }

}

Модель задачи;

class Task extends Model
{
    protected $primaryKey = 'task_id';

    protected $fillable = ['task_title','task_desc','status','priority','person_id','proj_title','proj_id','created_by'];

    public function project(){

        return $this->belongsTo('App\Project','proj_id');
    }


}

Заранее спасибо

1 Ответ

1 голос
/ 16 апреля 2019

сделайте это

<td>{{$task->project->proj_title}}</td>, и оно должно работать нормально, так как Задача и Проект имеют отношение belongsTo, вы сможете получить модель Проекта, связанную с $task, используя $task->project.

...