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

如何使用()在中写入子查询?

劳和雅
2023-03-14

我必须得到特定的数据,如"角色"表已提交状态,我需要状态=1,所有数据从角色表

$result = User::select()
    ->with('roles')
    ->where('email', $email)
    ->get();
    return $result;

共有2个答案

壤驷德寿
2023-03-14

你可以写subQuery,比如

$result = User::select()
    ->with(['roles' => function($q){    
         $q->where('status', 1);
    }])
    ->where('email', $email)
    ->get();
    return $result;
姜飞飙
2023-03-14

以下是对这个问题的回答:拉雷维尔-雄辩的“有”,“有”,“哪里有”-它们是什么意思?如果我正确理解了数据模型的结构:

  • 用户有许多角色
  • 角色具有属性状态
  • 要按状态=1筛选吗
$users = User::whereHas('roles', function($q){
    $q->where('status', '1');
})
->where('email', $email)
->get();

编辑:我对上面的答案不满意,因为据我所知,在这种情况下,返回的用户没有已经加载的角色列表,所以我检查了文档(https://laravel.com/docs/5.8/eloquent-relationships)根据我的发现,下面的代码应该满足您的要求:

$users = User::with(['roles' => function ($query) {
    $query->where('status', '1');
}])
->where('email', $email)
->get();

我从来没有使用过雄辩或拉威尔,我不是一个php开发人员,所以我不能尝试这个片段,如果它是不正确的,请让我知道。

 类似资料:
  • 问题内容: 我有以下sql查询,如何使用yii编写查询? 我没有使用,暂时正在避免使用它。 使用三个表,用户,类别和job_profile。 我已经编写了以下查询,但是我不知道如何包括join: 问题答案: $model = JobProfile::model()->with(‘userrelationname’,’categoryrelationname’)->findAll(array(“co

  • 我有一个mysql内部联接查询,它联接数据库中的3个表,并生成所需的结果集。现在我想使用session.createQuery()编写相应的hibernate查询。我已经在我的项目中为这3个表创建了模型类。没有与3个表关联的映射。mysql查询如下所示。 现在请告诉我如何使用hibernate session.createQuery()编写这个查询?请帮助我。下面是3个表的模型类 帐户. java

  • 问题内容: 我想加入两个表CUSTMR和DEPRMNT。 我需要的是:LEFT OUTER JOIN内有两个或多个带有子查询的表的LEFT OUTER JOIN,如下所示: 表格:CUSTMR,DEPRMNT 查询为: 这里的子查询是: 是否可以在LEFT OUTER JOIN内编写这样的子查询? 在我的DB2数据库上运行此查询时出现错误。 问题答案: 您需要在子选择上使用“ correlatio

  • 我想加入两张桌子。 我需要的是:两个或多个表的左外联接,左外联接内有子查询,如下所示: 在我的DB2数据库上运行这个查询时,我得到了一个错误。

  • 问题内容: 我有如下查询 我想以某种方式重用 我简化了上面的查询,但是实际上上面的选择是巨大而复杂的。我不想负担确保两者同步 我没有任何以编程方式重用它的方法。排除了T-SQL。我只能写简单的查询。这是应用程序的限制。 有没有一种方法可以在单个语句中重用相同的子查询 问题答案: 如果您使用的是SQL Server 2005+,请使用公用表表达式(CTE):