试图理解Laravel

时间:2017-03-02 00:27:17

标签: php laravel model-view-controller laravel-5.3

我刚刚开始学习Laravel,作为我的首发,我正在学习本教程视频系列。 https://youtu.be/Y1TkLkGhHwA

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

Order.php

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

我有点理解这是Laravel使用belongsTo方法在两个表之间建立关系的方式。 (我只是接受它)

但是当我在其他模型中使用此模型时,customer()中定义的Order.php函数将成为对象实例的属性(?)($ order-> customer - >名称)。这是我没有得到的部分,或者只是缺乏OOP知识......

路线\ web.php

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

1 个答案:

答案 0 :(得分:1)

如果我理解您的担心,您只会对所谓的急切加载感到困惑。您可以在此处详细了解:https://laravel.com/docs/5.4/eloquent-relationships#eager-loading

在幕后,Laravel懒散地加载了“客户”。单个查询中的数据。因此,在您的foreach示例中,如果您有10个订单,则将执行10个不同的查询以获取客户数据。

下次你这样做时,让我们说$order->customer->email,它不会再进行另一次查询,因为在第一次查询期间已经加载了客户数据。

按照我上面给你的链接,你会发现很棒的东西。