Php 在Laravel中指定模型关系
指定一个模型与另一个模型之间的关系有什么意义或好处。例如,laravel php框架有hasOne、hasMany、belongsTo等方法。。。 它们的基本功能是什么?如果忽略这些功能会产生什么后果?Php 在Laravel中指定模型关系,php,laravel,eloquent,Php,Laravel,Eloquent,指定一个模型与另一个模型之间的关系有什么意义或好处。例如,laravel php框架有hasOne、hasMany、belongsTo等方法。。。 它们的基本功能是什么?如果忽略这些功能会产生什么后果? 我只是拉威尔的一个初学者,希望扩大我的知识面。请不要因为我问这么简单的问题而责备我。我已经做了研究,但不能完全理解这个概念 Laravel的内置模型从称为(对象关系映射)的概念扩展而来,该概念基本上将类直接映射到数据库中的表 数据库表是基于关系连接的,例如,订单中的一条记录属于一个客户,一个客户
我只是拉威尔的一个初学者,希望扩大我的知识面。请不要因为我问这么简单的问题而责备我。我已经做了研究,但不能完全理解这个概念 Laravel的内置模型从称为(对象关系映射)的概念扩展而来,该概念基本上将类直接映射到数据库中的表 数据库表是基于关系连接的,例如,
订单
中的一条记录属于一个客户
,一个客户
可能有多个订单
。这些关系可以使用关系方法(hasOne
,hasMany
等)在Eloquent中定义,告诉Eloquent如何查询其他表,这样您就不必手动查询它们
举例说明
给我所有由客户John创建的订单(客户ID:1001)
稍微复杂一些的情况:
给我John创建的所有订单中包含的所有项目
正如您通过定义关系所看到的,您将从手动查询每个相关记录中解放出来。但是,必须知道,在某些情况下,当速度/性能可能是一个问题时,您可能希望使用QueryBuilder手动查询条目
// Using QueryBuilder
$orders = Order::where('customer_id', 1001)->get();
// Using Eloquent
// Assuming relationship has been defined
$orders = Customer::findOrFail(1001)->orders;
// Using QueryBuilder
$orders = Order::where('customer_id', 1001)->get();
$orderIDs = array_pluck('id', $orders->toArray());
$items = Item::whereIn('order_id', $orderIDs)->get();
// Eloquent
$items = Customer::findOrFail(1001)->orders->items;