Laravel hasManyThrough ничего не возвращает

Я пытаюсь использовать отношение hasManyThrough впервые. Но когда я пытаюсь вызвать метод, он ничего не возвращает.

Вот моя база данных:

User:
- id
- (...)

Shipment:
- id
- users_id
- (...)

Shipment_question:
- id
- shipment_id
- (...)

И вот код моей модели.

Пользователь:

public function Shipment()
{
return $this->hasMany('Shipment','users_id');
}

public function Shipment_question(){
return $this->hasManyThrough('Shipment_question','Shipment','users_id','shipment_id');
}

Пересылка:

public function User()
{
return $this->belongsTo('User','users_id');
}

public function Shipment_question()
{
return $this->hasMany('Shipment_question','shipment_id');
}

Shipment_question:

public function Shipment()
{
return $this->belongsTo('Shipment','shipment_id');
}

А вот и звонок:

Auth::User()->Shipment_question;

Я использую отладочную панель barryvdh, чтобы увидеть запросы, вызов shipment_question должен генерировать запрос, но в журнале запросов появляется только запрос auth :: user.

0

Решение

Отношения, чтобы работать как динамические свойства, должны быть camelCased, поэтому переименуйте:

public function Shipment_question(){
return $this->hasManyThrough('Shipment_question','Shipment','users_id','shipment_id');
}

//to
public function shipmentQuestion(){
return $this->hasManyThrough('Shipment_question','Shipment','users_id','shipment_id');
}

тогда вы сможете назвать это:

Auth::user()->simpmentQuestion;

в противном случае вы можете работать только с ним напрямую, вызывая его как метод:

Auth::User()->Shipment_question()->getResults();

// what gives the same result as dynamic property after fix:
Auth::User()->shipmentQuestion;

В целом, соглашения об именах Laravel4 + принудительно (как указано выше, или, по крайней мере, предлагают для других случаев), используя camelCased методы и свойства и StudlyCased классы.

Поэтому я предлагаю переименовать ваш Shipment_question класс для ShipmentQuestion также.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]