Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel中指定模型关系_Php_Laravel_Eloquent - Fatal编程技术网

Php 在Laravel中指定模型关系

Php 在Laravel中指定模型关系,php,laravel,eloquent,Php,Laravel,Eloquent,指定一个模型与另一个模型之间的关系有什么意义或好处。例如,laravel php框架有hasOne、hasMany、belongsTo等方法。。。 它们的基本功能是什么?如果忽略这些功能会产生什么后果? 我只是拉威尔的一个初学者,希望扩大我的知识面。请不要因为我问这么简单的问题而责备我。我已经做了研究,但不能完全理解这个概念 Laravel的内置模型从称为(对象关系映射)的概念扩展而来,该概念基本上将类直接映射到数据库中的表 数据库表是基于关系连接的,例如,订单中的一条记录属于一个客户,一个客户

指定一个模型与另一个模型之间的关系有什么意义或好处。例如,laravel php框架有hasOne、hasMany、belongsTo等方法。。。 它们的基本功能是什么?如果忽略这些功能会产生什么后果?
我只是拉威尔的一个初学者,希望扩大我的知识面。请不要因为我问这么简单的问题而责备我。我已经做了研究,但不能完全理解这个概念

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;