Laravel Eloquent并不急于加载,即使正在运行查询来加载数据

时间:2016-04-29 17:51:08

标签: php laravel eloquent laravel-5.2

我对Eloquent急切加载没有任何问题,直到这两个模型突然出现。在我的控制器中:

$items = OrderLineItem::where('QuantityNeeded', '>', 0)->with('SkuDetails')->get();

我的OrderLineItem型号:

class OrderLineItem extends Model {
    public function SkuDetails() {
        return $this->hasOne(Inventory::class, 'LocalSKU', 'SKU');
    }
}

我的Inventory型号:

class Inventory extends Model
{
    public function OrderLineItems() {
        return $this->belongsToMany(OrderLineItem::class, 'SKU', 'LocalSKU');
    }
}

但我的$items似乎并不急于加载SkuDetails。我打开了查询日志,它实际上是触发两个SQL语句来加载数据。

我看到select * from [OrderLineItems] where [QuantityNeeded] > ?select * from [Inventory] where [Inventory].[LocalSKU] in ?

所以数据是从SQL中提取的,但是这些模型没有匹配。如果我检查$items集合,则对象上没有SkuDetails。另外,我最终会调用类似$skus->first()->SkuDetails的内容。我在查询日志(select top 1 * from [Inventory] where [Inventory].[LocalSKU] = ? and [Inventory].[LocalSKU] is not null)中看到了一个新的SQL语句,它也告诉我它并不急于加载。

0 个答案:

没有答案