当前位置: 首页 > 知识库问答 >
问题:

Laravel 5.6.8雄辩的和多对多多对一的连接

厍华清
2023-03-14

我有许多对许多用户与城市地区之间的联系。我也有连接城市区域的区域(一个城市区域只能连接一个区域)。

我有这样的数据库结构:

使用者

  • id

城市地区

  • id
  • 姓名
  • area_id

城市用户

  • id
  • cityarea_id
  • user_id

地区

  • id
  • 姓名

接下来我有模特

用户

public function cityareas()
{
    return $this->belongsToMany('App\Cityarea');
}

城市地区

public function area()
{
    return $this->belongsTo('App\Area');
}

public function users()
{
    return $this->belongsToMany('\App\User');
}

地区

public function cityareas()
{
    return $this->hasMany('App\Cityarea');
}

问题:

如何让所有用户areas.name="South"与雄辩?

谢谢!!

共有3个答案

赵雪峰
2023-03-14

这正是属于许多关系的目的。

你只需要做,cityrea::where('name','South'))-

如果要对查询执行进一步操作,例如按在创建的用户排序,可以执行以下操作:

Cityarea::where('name', 'South')->first()->users()->orderBy('creaated_at', desc')->get();

请注意,如果没有名称为“南”的城市区域,则-

一种更有效的编程方法是使用whereHas方法,如下所述。

林运浩
2023-03-14

Jeune Guerrier解决方案是完美的,但你可以使用与()方法的雄辩如果你还需要cityArea收集随着用户收集。

$users = User::with('cityareas')->whereHas('cityareas.area', function ($query) {
    $query->where('name', 'South');
})->get();
傅长恨
2023-03-14

使用whereHas,您可以执行以下操作:

$users = User::whereHas('cityareas.area', function ($query) {
    $query->where('name', 'South');
})->get();
 类似资料:
  • 在我的应用程序中,我更新了从一对多到多对多的关系,我试图找出一种持久化关联功能的方法。 假设我有两个相关的表,例如狗和主人。如果我有一系列的主人,并且我正试图为这些主人获取一份狗的id列表,我应该如何雄辩地做到这一点? 这里也提出了类似的问题:https://laracasts.com/discuss/channels/laravel/getting-many-to-many-related-da

  • 我刚刚开始学习LaravelV3,我试图通过创建一个博客来了解eloquent的一对多关系。我的帖子与类别有多对一的关系(每个帖子都链接到一个类别)。 我有以下表格和以下字段: 帖子:id、标题、正文、创建日期、类别id 类别:id、名称 我有以下两种型号: 我想出了如何通过传递类别id来获得所有帖子: 我只是需要帮助,找出如何获得所有的职位,并得到他们的更正类别。因此,在视图中的一天结束时,我可

  • 我有帖子表和评论表。我想得到所有的帖子与它的评论和以下返回只是帖子有评论: 更新 例如 ID帖 1个职位1 2后2 id post\u id评论 1萨姆勒大学评论 Post::with('comments')只返回有注释的帖子,它只返回第一篇帖子,因为第二篇帖子没有注释,我想获取所有帖子(有注释或没有注释)

  • 如何制作一对多访问器? 用户模型: 历史模型: 如果我真的喜欢下面,它将工作。 用户模型: 历史模型: 控制器: 刀片视图: 它起作用了! 但是,我应该怎么做,如果我想要这个: 我喜欢 历史模型: 它不工作! 如果我编码像 它会回来的 此集合实例上不存在属性[happy]。 如果我编码像 它会回来的 未定义的属性:Illumb\Database\Eloquent\Relations\HasMany

  • 我正在使用Laravel 5创建一个博客,但我对多对多(通过透视表)关系有一个奇怪的问题。我的DB设置如下: 文章表: id|bigint|20|PK|不为空|自动增量 title|varchar|255|不为空 body|text|不为空 category_id|bigint|20|不为空 created_at|时间戳|不空 updated_at|时间戳|非空 已发布|布尔值|非空 delete

  • 我使用的是Laravel 5.4,其模型和表格结构如下: 一个用户可以有多个账户 一个帐号可以被多个用户共享 每个账户有多个持有量 因此,用户通过他们的许多帐户间接拥有许多资产。 我需要帮助在用户模型上定义一个称为“持有量”的关系,以获得适用于用户的所有持有量(基于他们所链接的账户)。 我尝试了很多不同的东西,在谷歌上花了很长时间。我可以接近BelongToMany和hasManyThrough,