如何在 Laravel Controller 中创建 SQL Join 语句

Posted

技术标签:

【中文标题】如何在 Laravel Controller 中创建 SQL Join 语句【英文标题】:How to create SQL Join Statement in Laravel Controller 【发布时间】:2018-12-30 04:41:36 【问题描述】:

我有两个表customer_idtbl_customertbl_stocks 连接在同一个数据库上。我关于这个问题的逻辑是 JOIN sql 语句。

这适用于 Laravel 和 mysql,到目前为止,我已经在 php 上尝试过,并且运行良好,但是当我在 laravel 上实现它时它无法正常工作,我想知道为什么?

这是我的 PHP 代码,想将其转换为 laravel,但我不知道该放在哪里?我会把它放在视图中还是控制器中

$query = "SELECT c.*, s.* FROM tbl_customer c JOIN tbl_stock s ON s.customer_id = c.customer_id AND c.customer_id = 1";

控制器

$data = DB::table('tbl_customer')
            ->join ......  //Im not sure about this 
            ->select ....  // neither this 
            ->get();

            print_r($data)

型号

我的模型上没有代码

路线

Route::get('/admin/shopcontrol', 'Admin\ShopsController@testquery');

我希望在一个简单的echo 中获取或获取查询或值的结果,并且获取连接已连接

【问题讨论】:

你做过雄辩的模型和关系吗? @AhmedNourJamalEl-Din 是的先生,您想让我展示它并编辑我的代码吗? 如果您创建了雄辩的模型及其关系,请将它们发布在您的问题中。 @AhmedNourJamalEl-Din 完成!先生,请看谢谢 @AhmedNourJamalEl-Din 我已经编辑了我的问题,请看一下谢谢 【参考方案1】:

你检查过 Laravel 网站吗?

https://laravel.com/docs/5.7/queries#joins

它有一个演示,您可以使用它来重新组织您的代码。

如下图所示。

加入 内连接子句

查询生成器也可用于编写连接语句。要执行基本的“内部连接”,您可以在查询构建器实例上使用 join 方法。传递给 join 方法的第一个参数是您需要连接的表的名称,而其余参数指定连接的列约束。当然,如您所见,您可以在单个查询中加入多个表:

$users = DB::table('users')
            ->join('contacts', 'users.id', '=', 'contacts.user_id')
            ->join('orders', 'users.id', '=', 'orders.user_id')
            ->select('users.*', 'contacts.phone', 'orders.price')
            ->get();

如果适合您,您可以在那里找到更多信息。

【讨论】:

您可以参考我的代码先生@Dende 吗?我知道 php 加入,但我在 laravel 语法上遇到了困难,请帮助谢谢【参考方案2】:

试试这个:

    $data = DB::table('tbl_customer')
                ->join('tbl_stock', 'customer_id', '=', 'tbl_customer.customer_id')
                ->select('tbl_customer.*', 'tbl_stock.*')
                ->where('customer_id', '=', 1) 
                ->get();

【讨论】:

以上是关于如何在 Laravel Controller 中创建 SQL Join 语句的主要内容,如果未能解决你的问题,请参考以下文章

如何使用一个命令在 laravel 中创建所有三个文件(控制器、模型和数据库迁移文件)

laravel中创建Events和Listeners

Laravel :: 路线与。控制器

Laravel:使用名称中的变量创建表

如何在 laravel Controller 中获取 Rapidapi?

如何在 laravel 中创建自定义关系?