我很难让一个非常嵌套的关系在Laravel中正常工作。
需要的行为如下,
我按ID选择一个事件,我想查看哪些人订阅了该事件。现在的问题是在事件和人之间有一些表。
这就是有效的查询!
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中实现这种嵌套关系链接有那么难吗?
谢啦!
我为以下情况创建了一个Hasmanythrough
关系:GitHub上的存储库
安装完毕后,可以这样使用:
class Event extends Model {
use \Staudenmeir\EloquentHasManyDeep\HasRelationships;
public function persons() {
return $this->hasManyDeep(
Person::class,
[City::class, Company::class],
['id'],
['city_id']
);
}
}
您可以使用withIntermedia()
从中间表中获取属性:
public function persons() {
return $this->hasManyDeep(
Person::class,
[City::class, Company::class],
['id'],
['city_id']
)->withIntermediate(City::class, ['id', '...']);
}
对于城市和公司的特定领域,你需要用口才来分发。例如:
return Event::with([
'city' => function ($query) {
$query->select('id', '...');
},
'city.companies' => function ($query) {
$query->select('id', '...');
},
'city.companies.persons' => function ($query) {
$query->select('id', '...');
}
])->get();
return Event::with('city.companies.persons')->get();
如果只想从人员
表中选择某些字段,请使用以下命令:
return Event::with(['city.companies.persons' => function ($query) {
$query->select('id', '...');
}])->get();
问题内容: 我在laravel中很难建立起非常嵌套的关系。 所需的行为如下, 我通过ID选择一个事件,我想查看哪些人已订阅该事件。 现在的问题是事件和人员之间有一些表格。 这是有效的查询! 事件模型 城市模型 公司模式 人物模型 我尝试过的 和 还有很多其他可能性,我真的很坚持。在laravel中实现这种嵌套关系链接如此困难吗? 谢谢! 问题答案: 如果只想从表中选择某些字段,请使用以下命令:
我有以下三个表格: 帖子 帖子: 评论: 标签: Post表有许多注释,comments表有许多与之关联的标记。 如何使用“快速加载”将所有这些表组合在一起? 比如: 但是这个查询总是在标记关系中返回空响应。 我做错了什么? 期望的结果是这样的: 你可以看到帖子里面包含评论,评论里面也包含标签关系。 另外,我在我的项目中使用了“jenssegers/laravel mongodb”包,我试图在没有
在之前,创建一个有依赖其他模型的模型的时候,我们需要提前把依赖的模型给建立好,这样就非常麻烦,是不是有那么一种方法,在一个 create 里面把其他的依赖模型一起新建出来呢? 这一小节就来解决这个问题。这其中有一个坑(关于命名),让我调试的头皮发麻。 Book 与 User 的 belongs 关系 1. 保存关系 来到 book.ts , 首先保存一下 this.belongsTo 的返回值,在
拉威尔说: 我需要的是这样的东西 我们可以在一个关系中加载多个关系。 这有可能吗?
使用Laravel 5.6,我试图从MySQL类别表中显示子类别的子类别。我想传递这个名字,并获得它的所有子类,而不管父类是什么。 类别表 期望结果 return App\Category::where('name','Child-1-P-2'))-
我有3个表:,和,这是其他2之间的枢轴。我需要做的是按表中的位置排序。 我尝试在中的关系中排序,或者在将一起使用时排序,但我可能做错了。前任: 有人能给出一个排序两级嵌套关系的基本示例吗? 编辑:我不需要按基表中的任何列排序,而是按第二个表中的列排序数据透视表中的条目列表。 编辑2: 举例说明如何对输出进行排序:
你一定看过下面的功能(在facebook上),一个有一些评论的帖子,每个评论都有一个类似的计数器。 https://img4.hostingpics.net/pics/67853820170616003640LaravelNewsAccueil.png 在拉雷维尔,这将是类似的 帖子有很多评论 以下评论发布 类似于用户的评论 CommentLike belong评论 评论有很多类似的评论 所以,现
我有以下三张桌子 教室 注册学生 iduser_idclass_id 帖子 模型 Classroom.php 注册学生。php 邮递php 现在我需要获得某个班级的所有帖子,学生在该班级注册。 例如,一名学生注册了教室表中id号为1的班级。所以在registered_students表中会注意到,这个特定的用户是在这个特定的类下注册的。每个类在post表中可能有多个post。用户需要获得他类的所有