如何在 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_id
即tbl_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
中获取或获取查询或值的结果,并且获取连接已连接
【问题讨论】:
你做过雄辩的模型和关系吗? @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 中创建所有三个文件(控制器、模型和数据库迁移文件)