2017-06-06 34 views
0

讓我用幾個字來解釋我的問題。 在我的控制,我有這樣一行:調用成員函數任務()on null on laravel 5

$tasks = $student->group->tasks()->orderBy('created_at', 'desc')->withPivot('id')->get(); 

這適用於現有的用戶,但是當我嘗試創建新的我收到

Call to a member function tasks() on null

我可以像這樣的東西還是什麼做你建議?

if(!is_null($tasks)) 
    $tasks = $student->group->tasks()->orderBy('created_at', 'desc')->withPivot('id')->get(); 
} 

控制器上這我我的表演功能

public function show(){ 
    $user = Auth::user(); 

    if(!$user) 
     return redirect('/')->withErrors(config('constants.NA')); 

    $countries = Country::all()->lists('name', 'id')->toArray(); 
    $profile = $user->profile; 
    $student = $profile->student; 

    // Tasks showed on students profile 
    if ($student->group) { 
     $tasks = $student->group->tasks() 
      ->orderBy('created_at', 'desc') 
      ->withPivot('id') 
      ->get(); 
    } 
    // Classmates 
    if ($student->group) { 
     $classmates = $student->group->students() 
     ->where('id', '!=', $student->id) 
     ->get(); 

    } 

    // Activated books 
    $books = Auth::user()->books()->orderBy('grade_id', 'asc')->get(); 


    if(!is_null($student->group)) 
    $iTasks = $student->group->tasks->count(); 
    else { 
    $iTasks = 0; 
    } 

    $iTodos = $user->todos->count(); 

    return view('student.profile.show',compact('user','profile', 'countries', 'iTasks', 'iTodos', 'tasks', 'classmates', 'books')); 
} 

這是我的表演來看,對於任務

<div class="tab-pane <?php if(isset($tab) && $tab == 'timeline'): ?> active <?php endif; ?>" id="timeline"> 
         @if($tasks->count()) 
          <div class="timeline"> 
          @foreach($tasks as $task) 
           <!-- TIMELINE ITEM --> 
           <div class="timeline-item"> 
           <div class="timeline-badge"> 
            <div class="timeline-icon"> 
            <i class="mdi mdi-clipboard-text font-red-intense"></i> 
            </div> 
           </div> 
           <div class="timeline-body"> 
            <div class="timeline-body-arrow"> </div> 
            <div class="timeline-body-head"> 
            <div class="timeline-body-head-caption"> 
             <span class="timeline-body-title font-blue-madison"> 
             {{ $task->professor->profile->user->name }} 
             </span> 
             <span class="timeline-body-time font-grey-cascade">ju ca caktuar një <a href="/student/tasks" class="font-red sbold">detyrë</a> të re.</span> 
            </div> 
            </div> 
            <div class="timeline-body-content"> 
            <span class="font-grey-cascade"> 
             {{ $task->pivot->comment }} 
            </span> 
            </div> 
            <hr> 
            Lenda: <span class="timeline-body-time font-grey-cascade sbold">{{ $task->subject->name }}</span> 
            <div class="pull-right"> 
            Krijuar më: <span class="timeline-body-time font-grey-cascade sbold">{{ $task->created_at->format(Config::get('klasaime.date_format')) }}</span> 
            </div> 
           </div> 
           </div> 
           <!-- END TIMELINE ITEM --> 
          @endforeach 
          </div> 
         @else 
          <div class="alert"> 
          Ju nuk keni asnje detyrë të caktuar! 
          </div> 
         @endif 
         </div> 
+0

哪裏是任務功能的樣子? – kunal

回答

0

看起來像你對我有沒有學生加入還沒有成功,或者某種程度上沒有被堅持。如果你已經創建和保存學生後添加學生一組,試試這個:

$student->load('group') 

運行之前:

$tasks = $student->group->tasks()->orderBy('created_at', 'desc')->withPivot('id')->get(); 

我需要看到更多的代碼,以提供更準確的答案。但是你得到的錯誤與你的學生的->group有關,而不是你的學生本身。

+0

是的,每個第一次註冊的用戶都應該選擇他們的組,然後在他的個人資料頁面上列出關於該組的所有任務。 就像我之前說過的,這隻發生在新用戶身上,因爲默認情況下該組爲空。現在 ,兩者都被存儲在對學生的個人資料顯示刀片,所以首先我想補充一點,新組的學生,但隨後出現這個錯誤,不讓我去完成用戶信息: 調用一個成員函數tasks()null – Nibla

+0

好的,你可以用你的控制器的完整方法來更新你的問題,這個方法在用戶創建時被調用嗎?應該很容易看到然後:-)我想我知道是什麼原因,但需要看你的代碼是肯定的。 –

+0

我有,請檢查。 – Nibla

0

做一個簡單的檢查,看看該組是否存在,然後繼續進行你需要執行的任何操作。

// controller 
$tasks = null; 

if ($student->group) { 
    $tasks = $student->group->tasks() 
     ->orderBy('created_at', 'desc') 
     ->withPivot('id') 
     ->get(); 
} 

// view 
@if($tasks) 
    {{ $tasks->id }} 
@else 
    No tasks found 
@endif 

編輯:在您的控制器在頂部添加$tasks = null;$classmates = null;。並在您的視圖中將@if($tasks->count())更改爲@if($tasks)。我不確定你在哪裏使用同學變量,但在使用之前添加一個檢查以確定它是否爲空。

+0

謝謝你的回答,做完像你說的那樣,現在我收到: 試圖獲取非對象的屬性(查看:C:\ xampp \ htdocs \ klasaime \ resources \ views \ student \ profile \ show.blade。 php) on storage/framework/views/ – Nibla

+0

@Nibla這只是一個僞代碼。實際的代碼應該取決於你將如何使用變量。發佈您的視圖代碼和完整的控制器邏輯,以便我們可以更好地爲您提供幫助。 – Sandeesh

+0

我有,請檢查 – Nibla

相關問題