我刚刚开始学习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;
答案 0 :(得分:1)
如果我理解您的担心,您只会对所谓的急切加载感到困惑。您可以在此处详细了解:https://laravel.com/docs/5.4/eloquent-relationships#eager-loading
在幕后,Laravel懒散地加载了“客户”。单个查询中的数据。因此,在您的foreach示例中,如果您有10个订单,则将执行10个不同的查询以获取客户数据。
下次你这样做时,让我们说$order->customer->email
,它不会再进行另一次查询,因为在第一次查询期间已经加载了客户数据。
按照我上面给你的链接,你会发现很棒的东西。