2016-10-28 3 views
0

У меня есть билеты стол. Главный билет таблица естьOne клиент. Таблица клиентов относится к таблице пользователей.Как запросить третью таблицу с отношениями hasOne в Laravel?

Ticket.php

public function user() 
{ 
    return $this->hasOne('App\Models\User'); 
} 

/** 
* Get the TicketStatus record associated with the Ticket. 
* One ticket has only one status 
*/ 
public function ticket_status(){ 
    return $this->hasOne('App\TicketStatus','id','ticket_status_id'); 
} 

/** 
* Get the Customer record associated with the Ticket. 
* One ticket has only one customer 
*/ 
public function customer() 
{ 
    return $this->hasOne('App\Models\Customer', 'id', 'customer_id'); 
} 

Customer.php

public function user() 
{ 
    return $this->belongsTo(User::class); 
} 

/** 
* Get the Ticket that owns the Customer. 
*/ 
public function ticket() 
{ 
    return $this->belongsTo('App\Ticket'); 
} 

User.php

index.blade.php

@foreach($tickets as $item) 
<tr> 
    <td>{{ $item->customer->first_name }}</td> 
</tr> 
@endforeach 

Основная таблица билетов. Он имеет foreign_key для пользователей и клиентов. Таблица Customers имеет внешний ключ для пользователя, который содержит first_name и last_name.

Проблема: Я хочу, чтобы получить доступ к $ item-> на клиента> first_name.

Ошибка: SQLSTATE [42S22]: Column не найдено: 1054 Неизвестный столбец 'users.ticket_id' в 'где предложение' (SQL:.. * Выберите из users где usersdeleted_at является нулевым и usersticket_id = 1 и users. ticket_id не нулевой предел 1)

Любая помощь приветствуется.

ответ

1

Если ваша схема и отношения определяются правильно, то вы можете написать код, как:

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

ИЛИ

@foreach($tickets as $item) 
<tr> 
    <td>{{ $item->user->first_name }}</td> 
</tr> 
@endforeach 
+0

спасибо. Ты гений !!! –

+0

Работает как шарм. –

1
  1. Ошибка вы Показанная предполагая, что users таблица dosn» t содержит ticket_id. Вы проверили его (возможно, вы забыли о миграции)?

  2. Ваш главный probkem должен быть решен путем изменения методы соотношения в Ticket классе, что:


public function customer() 
{ 
    return $this->hasOne('App\Models\Customer', 'customer_id'); 
} 

Второй аргумент должен быть внешним ключом из соответствующей таблицы (так же, как с hasMany связь).

+0

Спасибо, что помогли мне. –

Смежные вопросы