Laravel嵌套关系

我在laravel中很难建立起非常嵌套的关系。

所需的行为如下,

现在的问题是事件和人员之间有一些表格。

这是有效的查询!

SELECT persons.id, 

persons.firstname,

persons.lastname,

event_scores.score

FROM events

JOIN cities

ON cities.id = events.city_id

JOIN companies

ON cities.id = companies.city_id

JOIN persons

ON companies.id = persons.company_id

JOIN event_scores

ON event_scores.person_id = persons.id

WHERE event_scores.event_id = 1

GROUP BY persons.id

这些是我的关系

事件模型

class Event extends Eloquent

{

protected $table = 'events';

public function city()

{

return $this->belongsTo('City');

}

}

城市模型

class City extends Eloquent

{

protected $table = 'cities';

public function companies()

{

return $this->hasMany('Company');

}

public function event()

{

return $this->hasMany('Event');

}

}

公司模式

class Company extends Eloquent {

protected $table = 'companies';

public function persons()

{

return $this->hasMany('Person');

}

public function city()

{

return $this->belongsTo('City');

}

}

人物模型

class Person extends Eloquent

{

protected $table = 'persons';

public function company()

{

return $this->belongsTo('Company');

}

public function eventscore()

{

return $this->belongsToMany('Event', 'event_scores', 'person_id', 'event_id')

->withPivot('score')

->withTimestamps();

}

}

我尝试过的

return Event::with('city')->with('company')->get();

return Event::with('city')

->whereHas('companies', function($query) use ($company_id){

$query->where('company_id', $company_id);

})->get();

还有很多其他可能性,我真的很坚持。在laravel中实现这种嵌套关系链接如此困难吗?

谢谢!

回答:

return Event::with('city.companies.persons')->get();

如果只想从persons表中选择某些字段,请使用以下命令:

return Event::with(['city.companies.persons' => function ($query) {

$query->select('id', '...');

}])->get();

以上是 Laravel嵌套关系 的全部内容, 来源链接: utcz.com/qa/406917.html

回到顶部