当前位置: 首页 > 面试题库 >

mysql加入ON和AND laravel雄辩

潘辰龙
2023-03-14
问题内容

我已经能够使用以下原始sql获取查询结果:

select `person`.`id`, `full_name`, count(actions.user_id) as total
from `persons`
left join `actions`
on `actions`.`person_id` = `persons`.`id` 
and `actions`.`user_id` = $user
where `type` = 'mp' 
group by `persons`.`id`

但是我还不能使它雄辩地工作。

根据一些类似的答案,我曾尝试在->where()或中执行功能leftJoin(),但count尚未过滤每个人的操作$user。就目前而言:

$query = Person::leftJoin('actions', function($q) use ($user)
        {
            $q->on('actions.person_id', 'persons.id')
                ->where('actions.user_id', $user);
        })
        ->groupBy('persons.id')
        ->where('type', 'foo')
        //->where('actions.user_id', '=', $user)
        ->get(['persons.id', 'full_name', DB::raw('count(actions.id) as total')]);

我至少在标题 大致 正确的方向,正确的…?

如果相关,则该Persons.php模型具有两个actions关系:

public function actions()
{
    return $this->hasMany('Action');
}

public function actionsUser($id)
{
    return $this->hasMany('Action')->where('user_id', $id);
}

问题答案:

因此,作为参考,我像这样解决了它:

$query = Person::leftJoin('actions', function($q) use ($user)
        {
            $q->on('actions.person_id', '=', 'persons.id')
                ->where('actions.user_id', '=', "$user");
        })
        ->groupBy('persons.id')
        ->where('type', 'foo')
        ->get(['persons.id', 'full_name', DB::raw('count(actions.id) as total')]);

奇怪的是,其中的->where()子句leftJoin需要语音标记才能使变量正确通过sql查询(同样,“ 2”似乎不起作用,而“ 2”却可以)。



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

  • 我有2表连接在一起(订单和Order_item)当我使用连接我得到重复的记录,然后我消除他们与,但当我想得到总和不工作,因为它只是消除了相同的价格值,我所有的价格都是一样的,我得到1不是总和! 如果我不使用,我将按顺序获取每个项目的行 如何正确得到运费总和... 订单表中的数据是 sum=600,但如何获得它,如果我没有区分,我会在每个

  • Spotlight® on MySQL 可实时的诊断 MySQL 问题,并通过非常直观的用户界面图形方式显示所有数据库的活动状态。通过这个监控工具你可以深入了解并解决一些性能方面的问题。

  • 问题内容: 按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 已锁定 。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 是否有任何文献记载的技术可以加快mySQL转储和导入的速度?

  • 问题内容: 我有以下查询: 我想要插入或更新的ID。通常我运行第二个查询以获取此信息,因为我相信insert_id()仅返回“插入的” ID,而不返回更新的ID。 有没有一种方法可以在不运行两个查询的情况下进行INSERT / UPDATE和检索行ID? 问题答案: 检出此页面:https : //web.archive.org/web/20150329004325/https : //dev.m

  • 问题内容: 在MySQL中,和之间有什么区别?据我所知,只是语法更方便,而当列名不同时,则允许更多的灵活性。但是,这种差异是如此之小,您可能会以为他们会废除。 除了眼球以外,还有什么呢?如果是,在给定情况下应使用哪个? 问题答案: 它主要是语法糖,但是有一些区别值得注意: ON 是两者中更通用的。一个人可以在一个列,一组列甚至一个条件上联接表。例如: *当两个表共享它们所连接的名称完全相同的列时,