试图了解 Laravel 中的 table 关系

Trying to understand table relationship in Laravel

我刚开始学习 Laravel,作为我的入门者,我正在观看这个教程视频系列。 https://youtu.be/Y1TkLkGhHwA

我试图了解这两个 table 关系如何在模型级别工作。

Order.php

public function customer(){
   return $this->belongsTo('App\Customer');
}

我有点理解这就是 Laravel 如何通过使用 belongsTo 方法在两个 table 之间建立关系。 (我就这样接受了)

但是当我在其他模型中使用这个模型时,Order.php中定义的customer()函数变成了一个属性(?) of object instance($order->客户->姓名)。这是我不了解或缺乏 OOP 知识的部分...

Routes\web.php

Route::get('orders',function(){
    $orders = App\Order::all();
    foreach($orders as $order){
        echo $order->name . 'belongs to' . $order->customer->name;

如果我理解你的担心,你只是对所谓的 Eager Loading 感到困惑。您可以在此处了解更多相关信息:https://laravel.com/docs/5.4/eloquent-relationships#eager-loading

发生的事情是,在幕后 Laravel 在单个查询中为您延迟加载 'customer' 数据。因此,在您的 foreach 示例中,如果您有 10 个订单,将执行 10 个不同的查询来获取客户数据。

下次您这样做时,比方说,$order->customer->email,它不会进行另一个查询,因为该客户数据已在第一次查询期间加载。

按照我上面给你的link,你会发现惊人的东西。