laravel5 一对多关联 如何在页面上显示当前查询表有关表的某一字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel5 一对多关联 如何在页面上显示当前查询表有关表的某一字段相关的知识,希望对你有一定的参考价值。

比如 表a (id userid )有一字段userid (为表b的主键id) b表(id name) 现在查询表a (id userid )怎样写关联才能在列表显示name 查询一定要ORM

参考技术A OQL是我设计用来处理PDF.NET开发框架的ORM查询的,因此叫做ORM查询语言。自2006年第一版以来,经历了多次重构,到PDF.NET Ver 4.X 版本,已经比较稳定了,在我做的项目和框架用户朋友的项目中得到成功应用,基本符合一般的常规应用需求。

OQL有下面3个显著特点:

抽象的SQL,屏蔽了具体数据库的差异,因此支持所有数据库;
对象化的“SQL”,写OQL代码能够获得IDE的智能提示,能够得到编译时检查确保不会写出错误的SQL;
没有使用.NET的特性,比如泛型、反射、表达式树等东西,因此理论上OQL可以跨语言平台,比如移植到Java,C++,VB等。
OQL的原理基于2大特性:

表达式的链式调用
属性的实例调用
OQL支持4大类数据操作

数据查询:
单实体类(单表)查询
多实体类(多表)关联查询
数据修改
更新数据
删除数据
统计、聚合运算
OQL分页
参考技术B \a表::where('userid','=','id')->lists('name')->get->toArray();

如何使用 Apache DbUtils 获取一对多关联和父子类型关联?

【中文标题】如何使用 Apache DbUtils 获取一对多关联和父子类型关联?【英文标题】:How to use Apache DbUtils to fetch one to many associations and parent-child type associations? 【发布时间】:2013-03-02 12:37:12 【问题描述】:

有人可以解释一种使用 Apache DbUtils 获取一对多关联和父子类型关联的方法吗?我尝试搜索但找不到一对多关联的示例? DbUtils 页面上的文档也没有显示这种情况的示例?

例如

class Category 
    String code;
    List<Product> products;
    List<Category> subCategories;

假设我有一个 categories 表,其中有一个 parent_category 列用于父子关系、products 表和一个关联表 category_products 表,其中只有 category_code 和 product_code。假设我的查询正常工作,并且想一次性获取包含所有子类别和产品的类别。 DbUtils 有可能吗?我有很多这样的情况,那么是否有一种通用的、更简洁的方法,或者我们必须在每种情况下编写大量自定义代码?即便如此,你能给我举个例子吗?

谢谢, 稻谷

【问题讨论】:

您能否提供一个您想使用的示例 SQL 语句以及您希望最终得到的 Java 对象/结构? 【参考方案1】:

DbUtils 有一些 proto Sql 映射能力。

使用 BeanHandler 和 BeanListHandler,您可以将查询返回的行映射到您传递给处理程序的类的实例上。

映射很容易实现,逻辑可以封装在传递给处理程序的类中。类必须如下:

这是一个 JavaBean 每个属性的名称都必须映射到 select 语句的列别名(因此,请像 JavaBean 属性一样在 camelCase 中编写别名) 每个属性的类型必须是从 jdbc 驱动程序管理的类型之一(如果您愿意,可以覆盖实现您自己的 bean 行处理器的映射)

如果您的域模型被设计为对象的组合,但您想优化查询执行(1:n 或 m:n),您可以按照以下步骤进行: - 创建一个 JavaBean,它映射从查询返回的所有列,例如 CategoryRelational - 使用类似List&lt;Category&gt; mapCategory(List&lt;CategoryRelational&gt;) 的方法创建数据映射器对象,该方法接收平面对象的集合并返回分层对象的集合

映射的逻辑很简单但显然与查询耦合:

如果下一行代表新类别,则创建新的 Category 对象,其中第一个产品和第一个子类别位于同一行(如果您使用左连接而不是连接第一个产品或第一个子类别) 如果下一行代表与上一行相同的类别,则仅创建新产品和新类别(如果您使用左连接...)

我在一个大型项目中使用过这种方法,当您的数据库频繁更改时,我发现它非常灵活。

【讨论】:

以上是关于laravel5 一对多关联 如何在页面上显示当前查询表有关表的某一字段的主要内容,如果未能解决你的问题,请参考以下文章

Laravel5.6 Eloquent ORM 关联关系,一对一和一对多

如何使用 Apache DbUtils 获取一对多关联和父子类型关联?

laravel的模型关联之(一对多的反向)

Laravel 5 删除一对多关系

如何优化Hibernate

Laravel 5.8 在数据透视表上保存一对多关系