2016-06-30 3 views
0

Получил domain table, который имеет One To Many relationship с domain_hosts_table, server_hosts_table и systems_table. Все идет нормально.Отношения возвращающиеся неправильные/нулевые данные (Laravel 5,2)

Вызов данных таблицы:

$domains = Domain::with('domain_host', 'server_host', 'system')->get(); 

домена модель:

public function domain_host() 
{ 
    return $this->hasOne('App\DomainHost', 'id'); 
} 

public function server_host() 
{ 
    return $this->hasOne('App\ServerHost', 'id'); 
} 

public function system() 
{ 
    return $this->hasOne('App\System', 'id'); 
} 

DomainHost, ServerHost, система модель:

public function domains() 
{ 
    return $this->hasMany('App\Domain'); 
} 

Домены стол:

enter image description here

До сих пор так хорошо.

Давайте посмотрим, что возвращает эта конкретная таблица, будучи foreached.

enter image description here

Первые 2 строки должны быть одинаковыми (на основе их идентификаторы), и все строки после первых 2 просто пустые.

(dd из полученных данных, обратите внимание, что отношения пустые на 4-м объекте, 1-й объект фактически имеет данные).

enter image description here

ответ

0

Если бы определить еще один параметр при определении своих отношений:

public function domain_host() 
{ 
    return $this->hasOne('App\DomainHost', 'id', 'domain_host_id'); 
} 

public function server_host() 
{ 
    return $this->hasOne('App\ServerHost', 'id', 'server_host_id'); 
} 

public function system() 
{ 
    return $this->hasOne('App\System', 'id', 'system_id'); 
} 

Он ищет идентификатор текущей строки в другой таблице.