2016-10-20 7 views
0

Ich habe Haupttabelle Tickets mit einem Fremdschlüssel zu einer anderen Tabelle namens ticket_statuses. Ich möchte das Statusfeld von ticket_statuses nach Fremdschlüssel anzeigen lassen.Wie zu lösen Versuchen, Eigenschaft von Nicht-Objekt in Laravel zu bekommen?

TicketsController.php

<?php 

namespace App\Http\Controllers\Users; 

use App\Http\Requests; 
use App\Http\Controllers\Controller; 

use App\Ticket; 
use App\TicketStatus; 
use App\Models\User; 
etc... 

class TicketsController extends UserController 
{ 

public function index() 
{ 
    $tickets = Ticket::paginate(25); 

    return view('user.tickets.index', compact('tickets')); 
} 

} 

Ticket.php

class Ticket extends Model 
{ 

    // Ticket __belongs_to__ User 
    public function user() 
    { 
     return $this->belongsTo('App\Models\User'); 
    } 

    public function ticketstatus() 
    { 
     return $this->belongsTo('App\TicketStatus'); 
    } 



} 

TicketStatus.php

class TicketStatus extends Model 
{ 
    // Ticket Status __has_many__ Ticket 
    public function tickets() 
    { 
     return $this->hasMany('Ticket'); 
    } 

} 

index.blade.php

@foreach($tickets as $item) 
    <tr> 
     <td>{{ $item->ticket_statuses->status }}</td> 
     <td>{{ $item->customer }}</td> 
     <td>{{ $item->user->first_name }} {{ $item->user->last_name }}</td> 
     <td> 

      {!! Form::close() !!} 
     </td> 
    </tr> 
@endforeach 

Ich erhalte einen Fehler wegen der Zeile {{$ item-> ticket_statuses-> status}}. Ich versuchte auch {{$ item-> ticketstatus-> status}} Der Fehler ist Versuch, Eigenschaft des Nichtobjektes zu erhalten

Helfen Sie bitte. Danke

+0

Wie lauten die Spaltennamen in Ihrer 'ticket' Tabelle? –

+0

ID, Betreff, customer_id, user_id, _ticket_status_id –

+0

Überprüfen Sie meine Antwort unten. Ich denke, es ist '_ticket_status_id', die diesen Fehler verursacht. –

Antwort

1

wie Sie in den Kommentaren erwähnt, ändern

public function ticketstatus() 
{ 
    return $this->belongsTo('App\TicketStatus'); 
} 

zu

public function ticketstatus() 
{ 
    return $this->belongsTo('App\TicketStatus', '_ticket_status_id', 'id'); 
} 

Und dann versuchen Sie es erneut mit {{ $item->ticketstatus->status }}. Durch Beziehung Laravel sucht ticket_status_id Spalte in Ihrem tickets Tabelle, während Sie _ticket_status_id verwenden

Lassen Sie uns wissen, ob es hilft oder nicht.

+0

@mahfuzuk Ich bin gerade zurückgekommen, weil ich einem anderen Projekt zugewiesen wurde. Aber ich preise dich wirklich für deine Größe. Du bist ein Guru. –

1

Wenn Ihre $item keine ticket_statuses haben könnte, möchten Sie vielleicht eine Überprüfung vor der Anzeige vornehmen.

<td>{{ isset($item->ticketstatus) ? $item->ticket_statuses->status : '' }}</td> 

oder mit Laravel Blade-Kurzschrift

<td>{{ $item->ticketstatus->status or "default message" }}</td> 
+0

Ich bekomme keine Werte wegen {{isset ($ item-> ticket_statuses)? $ item-> ticket_statuses-> status: ''}} .. hmmm .. –

+0

können Sie versuchen, $ item-> ticketstatus zu verwenden? wenn immer noch nicht funktioniert, versuchen Sie dd ($ item) und zeigen Sie uns – SteD

1

Ihre Beziehung Name in Ticket-Modell ist ticketstatus, und Sie versuchen, Daten mit ticket_statuses zu bekommen, was völlig falsch ist, versuchen Sie Ihre Beziehung Namen zu verwenden, wie unten

$item->ticketstatus->status 
+0

Hallo. $ item-> ticketstatus-> status ist immer noch falsch .. ich frage mich, ob ich noch über controller –

+0

erweitern muss, kann Ihr falscher Fremdschlüssel in ticketStatus table.What Fremdschlüssel, den Sie in ticketstatus Tabelle verwenden? –

Verwandte Themen