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

Laravel雄辩-多形式子查询

吴炎彬
2023-03-14

我正在使用Laravel和它提供的雄辩的ORM,但我正在努力选择我需要的数据。我有两种型号

Company
Member

我该怎么做?

SELECT * FROM members m, companies c 
WHERE (m.main_type = "2" AND m.main_id = c.id AND m.status = "1") 
AND ((m.username LIKE "%keywords%") OR (c.name LIKE "%keywords%"))

共有2个答案

颜志学
2023-03-14

它应该是这样的。你不需要子查询。

Member::join('companies', 'companies.id', '=', 'members.main_id')
    ->where(function($query) {
        $query->where('main_type', 2)->where('status', 1);
    })->where(function($query) {
        $query->where('username', 'like', '%keywords%')->orWhere('name', 'like', '%keywords%');
    });
王飞虎
2023-03-14

考虑到公司可以有多个成员,您首先需要建立关系,如:

公司型号:

public function members(){
    return $this->hasMany(Member::class);
}

成员型号:

public function company(){
    return $this->belongsTo(Company::class,'main_id');
}

然后,您可以使用关系来获取数据:

$result = Company::with(['members' => function($q){
    return $q->where('main_type', 2)->where('status', 1)->where(function($sq){
        return $sq->where('username', 'like', '%keywords%')
                  ->orWhere('name', 'like', '%keywords%');
    });
}]);

根据外键名称更新关系的提示。我建议保持更直观,比如member_idcompany_id

 类似资料:
  • 我有一些Laravel多态模型,其中包括一个用户模型,可以有许多预订日历条目,可以有许多假日条目。我可以编写下面的SQL查询来提取所需的数据,但要与雄辩的查询版本作斗争。也许这是我的模型关系,或者我对拉拉维尔事物如何运作的理解。我有一些雄辩的查询确实有效,但是,它们非常低效,当我调查时,会使用许多选择,而不仅仅是一个。 我的SQL: 数据库表: 我想我的问题的症结在于预订日历有两个多态关系,因为它

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

  • 我有以下三种型号: 类别字段: 分类选项: 当我运行这个查询时,我得到了这个错误: SQLSTATE[42S22]:列未找到: 1054未知列'field ID'在'where子句'(SQL:选择*从其中=3)任何帮助请知道是什么问题!!?

  • 如何使用laravel雄辩的ORM关系在多个表中发出一个插入请求。即 表1:用户 id 姓名 电子邮件 表2:员额 id 表3:图像 id 用户id 邮政id 图像名称 关系 表id引用了其他两个表中的 表与

  • 我有一个问题,我很难用laravel雄辩的ORM编写这个问题。 如果有人能帮忙,我将不胜感激。 下面是SQL表达式:

  • 我有一个Laravel后端和一个VueJS前端。 我试图在一个具有hasOne关系的模型上生成一个查询,但只从关系中选择特定的列,做一个sum和一个group By。 null