Я пытаюсь использовать отношение 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.
Отношения, чтобы работать как динамические свойства, должны быть 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
также.
Других решений пока нет …