首页 > 解决方案 > 如何在 Laravel Controller 中创建 SQL Join 语句

问题描述

我有两个表customer_idtbl_customer连接tbl_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并且获取连接已连接

标签: phpmysqlsqllaraveleloquent

解决方案


你检查过 Laravel 网站吗?

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

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

如下所示。

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();

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


推荐阅读