试图了解 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,你会发现惊人的东西。
我刚开始学习 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,你会发现惊人的东西。