gpt4 book ai didi

php - 拉维尔 : Having lot of problems converting SQL query to query builder

转载 作者:行者123 更新时间:2023-11-28 23:39:35 24 4
gpt4 key购买 nike

我在将此查询从 MYSQL 转换为 Laravel 查询构建器时遇到了很多问题...有人可以帮我解决这个问题吗?我正在尝试为实际用户解析所有项目(稍后我将用实际用户替换 1 值),id 存储在不同的基础上,这些基础具有项目 id、用户 id 和公司 id。

-- SQL

SELECT *
FROM projets, companies, users, userscompaniesprojets

WHERE 1 = userscompaniesprojets.id_user

AND companies.id = userscompaniesprojets.id_companies

AND userscompaniesprojets.id_projet = projets.id;

-- Laravel

$companies = DB::table('projets', 'userscompaniesprojets', 'companies')
->where('userscompaniesprojets.id_user', '=', '1')
->where('companies.id', '=', 'userscompaniesprojets.id_companies')
->where('userscompaniesprojets.id_projet', '=', 'projets.id')
->get();

最佳答案

如果您使用 toSql 方法查看查询的输出

DB::table('projets', 'userscompaniesprojets', 'companies')->
where('userscompaniesprojets.id_user', '=', '1')->
where('companies.id', '=', 'userscompaniesprojets.id_companies')->
where('userscompaniesprojets.id_projet', '=', 'projets.id')->
toSql();

你会看到结果 SQL 是

select * from "projets" 
where "userscompaniesprojets"."id_user" = ? and
"companies"."id" = ? and "userscompaniesprojets"."id_projet" = ?

这是由于 table 方法只采用单个表,请参阅 API docs

构造此查询时需要使用连接,请参阅 docs再一次。

我认为这样的事情会完成你想要的

DB::table('projets')->
join('usercompaniesprojects', 'userscompaniesprojets.id_user', '=', '1')->
join('companies', 'companies.id', '=', 'userscompaniesprojets.id_companies')->
where('userscompaniesprojets.id_projet', '=', 'projets.id');

结果

select * from "projets" 
inner join "usercompaniesprojects" on "userscompaniesprojets"."id_user" = "1"
inner join "companies" on "companies"."id" = "userscompaniesprojets"."id_companies"
where "userscompaniesprojets"."id_projet" = ?

有关在 Laravel 中调试查询的更多信息,请查看此 article .

关于php - 拉维尔 : Having lot of problems converting SQL query to query builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34763734/

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