Laravel中的SQL连接,如何?
Posted
技术标签:
【中文标题】Laravel中的SQL连接,如何?【英文标题】:SQL join in Laravel, how to? 【发布时间】:2020-06-04 16:08:52 【问题描述】:请帮助我,使用 JOINS,学习 SQL 和连接很痛苦 :(
我有 table: categories 列名:Name, ID
我有表:sub_categories,列名:ID
我有表:provider_services,列名:category_id & subcategory_id
当我在 laravel 查看刀片时$provider->providerServices()->where("status",1)->count()
我将收到:2
这意味着,该提供商有 2 个服务,其 category_id 为 2、3 和 subcategory_id 为 4,8
问题: 如何将此数据加入表类别并使用 cat_id 和 subcat_id 获取类别名称?
Category_id 2 是 - 绘画 Category_id 3 是 - 管道 SubCategory_id 是 - Aqua SubCategory_id 8 是 - 测试因此,我需要一些东西:绘画和水族,管道和测试
非常感谢!
【问题讨论】:
【参考方案1】:内连接子句
查询生成器也可用于编写连接语句。要执行基本的“内部连接”,您可以在查询构建器实例上使用 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();
来源:https://laravel.com/docs/5.8/queries#joins
上面的示例可以很容易地更改为适合您。 的连接函数如下:
->join('table', 'column1', '=', 'column2')
【讨论】:
【参考方案2】:奇怪,为什么这个 SQL 查询返回的是 Categories & Sub-Categories 的整体状态,而不是 provider_services 的状态?
SELECT categories.name, categories.id, sub_categories.id as idPodKa, sub_categories.name as ImjaPodkategorij, provider_services.status as Status
FROM categories
LEFT JOIN sub_categories
ON categories.id=sub_categories.category_id
LEFT JOIN provider_services
ON categories.id=sub_categories.category_id=provider_services.status
where provider_services.status = 1
【讨论】:
以上是关于Laravel中的SQL连接,如何?的主要内容,如果未能解决你的问题,请参考以下文章
如何将左连接横向 SQL 查询转换为 Laravel Eloquent 查询?
如何修复 laravel 5.5 中的查询生成器错误 sql 注入 *