gpt4 book ai didi

php - Laravel - 连接闭包不适用于表引用

转载 作者:行者123 更新时间:2023-11-29 01:57:06 25 4
gpt4 key购买 nike

我被困在 mysql 连接查询中。

我目前有以下内容:

    $query = DB::table('packages')
->join('assigned_packages', function($join) use($id)
{
$join->on('packages.id', '=', 'assigned_packages.registered_package_id')
->where('assigned_packages.customer_id', '=', $id);
})
->join('registered_packages', function($join)
{
$join->on('packages.id', '=', 'registered_packages.id')
->where('registered_packages.id', '=', 1);
});

这工作正常,但如您所见,我有一个硬编码的 1:

->where('registered_packages.id', '=', 1);

1 应替换为表 assigned_pa​​ckages 和列 registered_pa​​ckage_id 中的值。我试过了

    $query = DB::table('packages')
->join('assigned_packages', function($join) use($id)
{
$join->on('packages.id', '=', 'assigned_packages.registered_package_id')
->where('assigned_packages.customer_id', '=', $id);
})
->join('registered_packages', function($join)
{
$join->on('packages.id', '=', 'registered_packages.id')
->where('registered_packages.id', '=', 'assigned_packages.registered_package_id');
});

但这行不通。我究竟做错了什么?我想我需要第二次加入的结果。但是我该怎么做呢?

dd(DB::getQueryLog()); 

输出:

array(2) {
[0]=>
array(3) {
["query"]=>
string(48) "select * from `customers` where `id` = ? limit 1"
["bindings"]=>
array(1) {
[0]=>
string(2) "45"
}
["time"]=>
float(0.65)
}
[1]=>
array(3) {
["query"]=>
string(278) "select * from `packages` inner join `assigned_packages` on `packages`.`id` = `assigned_packages`.`registered_package_id` and `assigned_packages`.`customer_id` = ? inner join `registered_packages` on `packages`.`id` = `registered_packages`.`id` and `registered_packages`.`id` = ?"
["bindings"]=>
array(2) {
[0]=>
string(2) "45"
[1]=>
string(39) "assigned_packages.registered_package_id"
}
["time"]=>
float(0.9)
}
}

最佳答案

你的 join 闭包需要像建议的那样 DB::raw,或者 on 的方法:

->join('registered_packages', function($join)
{
$join->on('packages.id', '=', 'registered_packages.id')
->on('registered_packages.id', '=', 'assigned_packages.registered_package_id');
});

where 连接仅用于传递给查询的值。

关于php - Laravel - 连接闭包不适用于表引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25838963/

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