У меня есть три таблицы:Не удается получить hasManyThrough работать
nCompanies (model Company)
nTransactions (model Transaction)
nBrokers (model Broker)
Одна компания может иметь большое количество операций Один брокера может иметь много сделок
компании и посредник не имеет отношения ,
Теперь я хотел бы получить список брокеров для каждой компании через транзакции компании. Для этого я думал, что hasManyThrough() выполнит эту работу. Но я не могу заставить его работать.
В моей модели компании у меня есть это:
class Company extends Model
{
protected $table = 'nCompanies';
protected $primaryKey = 'nCompanyId';
public function transactions()
{
return $this->hasMany('App\Transaction', 'nCompanyId');
}
public function brokers()
{
//This does not work
return $this->hasManyThrough('App\Broker', 'App\Transaction', 'nCompanyId', 'nBrokerId');
}
}
следующих работ, но я предпочел бы сделать это с в модели, чтобы получить коллекцию брокеров для каждой компании, компании-> брокеры вместо плоского списка.
$companies = DB::table('nCompanies')
->join('nTransactions', 'nCompanies.nCompanyId', '=', 'nTransactions.nCompanyId')
->join('nBrokers', 'nTransactions.nBrokerId', '=', 'nBrokers.nBrokerId')
->selectRaw('nBrokers.*, nCompanies.*)
->groupBy('nCompanies.nCompanyId', 'nBrokers.nBrokerId')
->get();
Как я могу это решить? Должен ли я использовать что-то другое вместо hasManyThrough?
Спасибо! Оно работает – Josef