首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用->lists()建立非雄辩模型的Laravel

用->lists()建立非雄辩模型的Laravel
EN

Stack Overflow用户
提问于 2015-05-14 15:07:48
回答 2查看 861关注 0票数 0

出于数据库复杂性的原因,我在Laravel项目中运行查询,而不对每个表使用Model。我想要实现的是重新调整拉勒维尔的->lists("column_1", "column_2", "...")所能达到的同样的结果。基本上,我是在查询一个表,将它加入到其他四个表中,并将结果输出到一个表中。

下面是我试图运行以获得结果的查询的一个示例:

代码语言:javascript
运行
复制
DB::connection("example")->select(DB::raw("SELECT table_1.name, table_2.name FROM table_1 LEFT JOIN table_2 ON table_2.table_1_id = table_2.id WHERE table_2.status = 'something';"));

基本上,我试图使用以下链接查询将其转换为雄辩:

代码语言:javascript
运行
复制
DB::connection("example")
  ->table("table_1")
  ->leftJoin("table_2", "table_2.table_1_id", "=", "table_1.id")
  ->lists("table_1.name", "table_2.name")
  ->where("table_2.status", "=", "something");

这应该返回table_1name列和table_2name列中的唯一值。然而,Laravel返回以下错误:

完整性约束违反:字段列表中的1052列'name‘不明确:选择namename从table_1中选择table_2.table_1_id左加入table_2;

现在我知道了一个模棱两可的问题,这就是为什么我把->lists("table_1.name", "table_2.name")放在这里,但是Laravel似乎忽略了这一点。

有人知道我如何使用Laravel返回每个列中唯一值的列表吗?我想我可以为每一个人写一个SELECT DISTINCT(table_1.name), DISTINCT(table_2.name), ...,作为最后的手段,我会这样做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-14 16:16:11

我找到了一个可用的Laravel解决方案,它不使用列表,但完成了同样的任务。首先,在没有->lists()闭包的情况下准备查询:

代码语言:javascript
运行
复制
$query = DB::connection("example")
  ->table("table_1")
  ->leftJoin("table_2", "table_2.table_1_id", "=", "table_1.id")
  ->where("table_2.status", "=", "something");

然后,为我需要以下值的每个列向$query对象添加一个$query闭包:

代码语言:javascript
运行
复制
$table_1_names = $query->select("table_1.name" AS "Table 1 Name")->distinct()->get();
$table_2_name = $query->select("table_2.name" AS "Table 2 Name")->distinct()->get();

对任何一个变量调用dd()都会返回该特定列中所有唯一值的数组,该数组可以在视图中的foreach循环中使用。

票数 1
EN

Stack Overflow用户

发布于 2015-05-14 15:27:25

我认为可以通过在select语句中使用别名来解决这个问题:

代码语言:javascript
运行
复制
 DB::connection("example")->select(DB::raw("SELECT table_1.name AS name, ...)

然后可以在->lists(名称)中使用别名

http://forumsarchive.laravel.io/viewtopic.php?id=8730

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30240779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档