我有以下三张桌子
教室
id主题
注册学生
iduser_idclass_id
帖子
id类\ id类型附件
模型
Classroom.php
public function posts()
{
return $this->hasMany(Post::class);
}
注册学生。php
public function classroom()
{
return $this->belongsTo(Classroom::class);
}
邮递php
public function classroom()
{
return $this->belongsTo(Classroom::class);
}
现在我需要获得某个班级的所有帖子,学生在该班级注册。
例如,一名学生注册了教室表中id号为1的班级。所以在registered_students表中会注意到,这个特定的用户是在这个特定的类下注册的。每个类在post表中可能有多个post。用户需要获得他类的所有帖子。
我在尝试这样的事情:
$registered_classes = RegisteredStudent::where('user_id',$user->id)
->where(function ($q) use ($class_id){
Post::where('class_id',$class_id);
})->get();
这绝对是不对的。对此的正确查询是什么。
您首先需要纠正这些关系,正如TheArKa在回答中所说的那样(因为表和类名没有正确地遵循laravel雄辩的约定)。
那么正确的查询应该是:
$posts_of_class_of_user =
RegisteredStudent::where('user_id',$user->id)->classroom->posts
这将首先获得用户从注册用户从注册学生,然后它将获得课堂实例从属性到关系,然后它将获得帖子从有很多关系
您已经创建了具有教室
关系的注册学生
模型。问题是,如果您的外键与Laravel行为不同,则必须将其包含在关系中。这样地:
Classroom.php
public function posts(): HasMany
{
return $this->hasMany(Post::class, 'class_id');
}
*Laravel行为需要您使用
课堂id
而不是课堂id
注册学生。php
public function classroom(): BelongsTo
{
return $this->belongsTo(Classroom::class, 'class_id');
}
public function user(): BelongsTo
{
return $this->belongsTo(User::class);
}
邮递php
public function classroom(): BelongsTo
{
return $this->belongsTo(Classroom::class, 'class_id');
}
更多关于Laravel行为的详细信息,这里有完整的例子
*编辑
然后,如果您想获得某个学生注册的特定班级的所有帖子,可以使用
和
方法:
public function getAllPostsClassroom()
{
$registeredUser = RegisteredStudent::where('user_id', $user->id)->with(['classroom.posts' => function($query) use ($class_id) {
$query->where('class_id', $class_id);
}])->first();
}
您将获得注册用户的
教室
内的所有帖子
问题内容: **如果要基于SellerInfoES的嵌套要约价格数组(嵌套数组)对象,我正在尝试汇总和查找价格范围。内部字段是“ offerPrice”。我如何在Elasticsearch中的嵌套数组字段上编写聚合。我尝试了以下查询,但无法正常工作。收到此错误:解析失败[在[price_ranges]中找到了两个聚合类型定义:[嵌套]和[过滤器]] 对应: 查询: 问题答案: 您必须使用。在内部使
然后我添加了一个自定义存储库来执行搜索: 然后我这样搜索: 但是我没有得到任何结果,尽管事实上有匹配的结果。 我在谷歌上没有找到任何答案。有人能帮我吗?
我正在构建一个搜索查询,它将一组约束()动态地添加到查询中。一般预期结构如下 换句话说,我有一组(一个或多个)必须全部满足的条件(上面的)。可能有几个这样的集合,其中任何一个都足以进行最后的匹配(上面的)。 这种结构的一个示例,由我的代码生成(这是完整的API查询,生成的部分是): 我对这个查询的理解是: 如果和 或 如果 条目将匹配 不幸的是,我把Elasticsearch称为错误 这个错误是什
我有现有的学生,临时演员 如何在JPA Hibernate上加入这些表?我当前的代码是 学生实体类 附加实体类: 和地址实体类 这是我的存储库类 但是当我在学生实体中使用OneToOne时,我得到了异常“org.hibernate.LazyInitializationException:未能懒惰地初始化角色集合:com.jpa.belajarjpa.enitities.Student.extras
问题内容: 因此,我有一个很小的查询可以在我的数据库上运行,并且在MySQL Workbench中可以正常工作。基本上,再次使用带有左联接的SELECT和带有左联接的UNION。 在尝试将其翻译为Laravel时没有成功。 我遇到了错误 Builder.php 1249行中的ErrorException:未定义的属性:Illuminate \ Database \ Eloquent \ Build
因此,我在数据库上运行了这个小查询,它在MySQL工作台上运行良好。基本上,使用左连接进行选择,然后再次使用左连接进行并集。 年,他试图把它翻译成拉威尔,但没有成功。 我发现了错误 生成器中的错误异常。php第1249行:未定义的属性:Illumb\Database\Eloquent\Builder::$bindings 我如何在Laravel中执行一个完全原始的查询,或者如何在Laravel中以