2016-10-20 3 views
0

ticket_statuses라는 다른 테이블에 외래 키가있는 주 테이블 티켓이 있습니다. 외래 키에 따라 ticket_statuses에서 상태 필드를 표시하고 싶습니다.해결 방법 해결 방법 Laravel에서 객체가 아닌 속성을 얻으려고합니까?

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 

{{$ item-> ticket_statuses-> status}} 행으로 인해 오류가 발생했습니다. 나는 또한 {{$ item-> ticketstatus-> status}} 오류가 있습니다 비 객체의 속성을 얻으려고 시도합니다

도와주세요. 감사합니다.

+0

'tickets' 테이블에있는 열 이름은 무엇입니까? –

+0

id, subject, customer_id, user_id, _ticket_status_id –

+0

내 대답을 확인하십시오. 나는이 오류를 일으키는'_ticket_status_id'라고 생각한다. –

답변

1

아래 같은

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

다음

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

하고 {{ $item->ticketstatus->status }} 다시 시도하십시오. 관계를 통해 laravel은 사용하는 동안 테이블의 ticket_status_id 열을 찾고 있습니다. _ticket_status_id

도움이되는지 아닌지 알려주십시오.

+0

@ mahfuzuk 다른 프로젝트에 배정 되었기 때문에 방금 돌아 왔습니다. 그러나 나는 당신의 위대함에 대해 정말로 당신을 찬양합니다. 너는 전문가 야. –

1

$item에 ticket_statuses가없는 경우 표시하기 전에 확인하는 것이 좋습니다. ,

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

또는 Laravel 블레이드와

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

{{isset ($ item-> ticket_statuses) (으)로 인해 값이 없습니다. $ item-> ticket_statuses-> status : ''}} .. hmmm .. –

+0

$ item-> ticketstatus를 사용해 볼 수 있습니까? 여전히 작동하지 않는다면 dd ($ item)을 시도하고 – SteD

1

티켓 모델에서 귀하의 관계 이름 ticketstatus입니다 속기하면 데이터가 완전히 잘못이 무엇인지, 당신의 관계 이름을 사용하려고 ticket_statuses를 사용하여 얻을려고 당신이 의견에서 언급 한 바와 같이, 변경

$item->ticketstatus->status 
+0

안녕을 표시하십시오. $ item-> ticketstatus-> 상태가 여전히 잘못되었습니다. 컨트롤러를 통해 확장해야 할 필요가 있습니다. –

+0

는 ticketStatus 테이블에서 잘못된 외부 키를 유지할 수 있습니다. ticketstatus 테이블에서 사용하는 외래 키는 무엇입니까? –