gpt4 book ai didi

php - Laravel:左连接 sql 错误

转载 作者:行者123 更新时间:2023-11-30 22:43:29 25 4
gpt4 key购买 nike

我已经使用 Laravel 编写了一个 sql 查询,但我不明白,为什么会产生错误!代码如下,

连接操作:

MeetingRoom::select('mr_id')

->leftJoin('meetingroomhistory',function($join)
{
$join->on('country','=',Session::get('country'));
$join->on('location','=',Session::get('location'));
$join->on('building','=',Session::get('building'));
$join->on('floor','=',Session::get('floor'));
$join->on('name_of_mr','=',Session::get('room'));
})
->where('meetingroom.id','=','meetingroomhistory.mr_id')
->get();

错误:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Bangladesh' in 
'on clause' (SQL: select `mr_id` from `meetingroom` left join
`meetingroomhistory` on `country` = `Bangladesh` and `location` =
`Dhaka` and `building` = `Uttara` and `floor` = `3` and `name_of_mr` =
`1` where `meetingroom`.`id` = meetingroomhistory.mr_id)

但是,如果我手动运行查询以使用 phpmyadmin 将此语法“Bangladesh”更改为“Bangladesh”,那么它运行良好并向我显示结果。请有人告诉我,我该如何解决?

最佳答案

我认为您混淆了 where 部分和 join 部分。

$join->on($x, $y) 语句用于将您的表连接在一起。 $x$y 都应该是表格中列的名称 - 这就是 Laravel 为它们添加反引号的原因。

$where() 语句用于与您提供的值进行比较。您的 Session::get() 调用表明这就是您正在做的事情。

这是建议的重写,但可能需要对其进行调整以满足您的具体需求。

MeetingRoom::select('mr_id')
->leftJoin('meetingroomhistory', 'meetingroom.id', '=', 'meetingroomhistory.mr_id')
->$where('meetingroom.country','=',Session::get('country'))
->$where('meetingroom.location','=',Session::get('location'))
->$where('meetingroom.building','=',Session::get('building'))
->$where('meetingroom.floor','=',Session::get('floor'))
->$where('meetingroom.name_of_mr','=',Session::get('room'))
->get();

我假设国家、位置等列是 session 室表的一部分,如果不是,您可以将它们更改为 $where('meetingroomhistory.country', ...) 等等相反。

最后,我不确定您为什么只选择一个值,当然,这取决于您。如果只需要一个单元格,可以使用 pluck(),如果需要很多单个结果,可以使用 lists()

关于php - Laravel:左连接 sql 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30388297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com