2017-09-04 6 views
-1

에 비 개체의 속성을 얻으려고 노력 해결하는 방법 나는이내 Laravel 5.2 응용 프로그램에서 laravel 5.2

id  task_name  project_id 
    1   aaa    1 
    2   hjhkj    2 
    3   jhghg    1 
    4   jgsdygu   3 
    5   gdggfv   2 

같은 작업 테이블이 지금은의 관련 각 PROJECT_ID에 대한 작업 이름을 표시하기 위하여려고하고있다가 내 리소스 파일의 작업 폴더에있는 index.blade.php 파일.

내가 지금은 작업을 볼 수있는이

@foreach ($project->tasks as $task) 
    <h4><a href="/projects/{{$project->id}}/tasks/{{ $task->id }}">{{ $task->task_name }}</a></h4> 
@endforeach 

이 코드를 사용하고 각 PROJECT_ID에 관련된 이름을 지정합니다. 하지만 지금은

TaskController.php 방법이

public function getOneProjectTask($projectId, $taskId) 
    { 
     $task = Task::where('project_id', $projectId) 
         ->where('id', $taskId) 
         ->first(); 
     return view('tasks.show')->withTask($task)->with('projectId', $projectId); 
    } 

하지만 난에 대한 작업 폴더에있는 show.blade.php 파일 마녀의 각 작업 이름 및 디스플레이 PROJECT_ID, 작업 ID와 작업 이름을 클릭해야 오류 메시지

Trying to get property of non-object (View: C:\Users\Lilan\Desktop\prome\resources\views\tasks\show.blade.php) 

작업/show.blade.php

{{ $task->task_name }} 
{{$task->project_id}} 

how can fix this problem? 

내 RO 다음 있어요 백인 군대

하는
Route::get('projects/{projects}/tasks/{tasks}', [ 
    'uses' => '\App\Http\Controllers\[email protected]', 

]); 
+0

원하는 출력은 무엇입니까? –

+0

task_name, project_id, 작업 ID를 인쇄해야합니다. 업데이트 된 질문 – Lilan

+0

경로를 표시하십시오. –

답변

0

먼저 작업 자원 경로

Route::resource('tasks', 'TaskController');

사용 역의 관계를 확인, 작업 모델에서 함수가

public function project(){ return $this->belongsTo('App\Project', 'project_id'); }

하고 HREF 링크

, 제공 할 작업의 링크는 href="{{ $url = route('tasks.show', [$task->id]) }}",

을 표시합니다.

역방향 관계를 사용하면 {{ $task->project->id }}과 같은보기에 작업 개체를 전달할 때 프로젝트 ID를 얻을 수 있습니다.

+0

어떨까요 My allready exit 작업 모델 함수 public function project() \t { return $ this-> belongsTo ('App \ Project'); } – Lilan

+0

그렇다면 다른 Task 모델을 만들 필요가 없습니다. 외래 키 project_id를 Task 모델 함수 프로젝트에 제공하면됩니다. – Wangchen

+0

여기에 같은 오류가 있습니다. – Lilan

0

이 시도 :

public function getOneProjectTask($projectId, $taskId) { 

    // dd($projectId); 
    // dd($taskId); 

    $task = Task::where([ 
       ['project_id', '=', $projectId], 
       ['id', '=', $taskId], 
      ])->first(); 

    // dd($task); 

    return view('tasks.show', compact('task', 'projectId')); 
} 

확인 당신이 얻는 경우 값을 사용하여이

public function getOneProjectTask($projectId, $taskId) 
    { 
$task = Task::where('project_id', $projectId) 
         ->where('id', $taskId) 
         ->first(); 
     return view('tasks.show')->withTasks($task)->with('projectId', $projectId); 
    } 

경로 TaskController을하고있다 dd

+0

내 getOneProjectTask 메서드에서 dd 값이 작동합니다. – Lilan

+0

dd ($ task)의 결과는 무엇입니까? ? –

+0

인쇄 작업 ID가 "1" – Lilan

0

Route::get('projects/{projects}/tasks/{tasks}', [ 
    'uses' => '\App\Http\Controllers\[email protected]', 

]); 

tasks/show.blade.php

{{$tasks->task_name}}