Laravel 5.6 Eager Loading特定列不返回任何内容

Chi*_*ung 5 php laravel laravel-5

我有两节课,ProductProductFormat.正确定义了这种关系,我的产品是hasManyProductFormat.

public function formats()
{
    return $this->hasMany(ProductFormat::class);
}
Run Code Online (Sandbox Code Playgroud)

当我试图加载与特定列的关系时,如文档(https://laravel.com/docs/5.6/eloquent-relationships#eager-loading)中所示,它没有按预期工作.

例如,当我执行以下操作时:

Product::with('formats:id,upc')->get();
Run Code Online (Sandbox Code Playgroud)

我得到了我的产品,到处都是空格式.

{
    id: 1,
    formats: [ ]
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我执行以下操作:

Product::with('formats')->get();
Run Code Online (Sandbox Code Playgroud)

我得到了预期的格式,但它有太多不需要的列.

{
    id: 1,
    formats: [
        {
            id: 1,
            upc: "101862422191",
            weight: 8.46,
            weight_unit: "kg"
        }
   ]
}
Run Code Online (Sandbox Code Playgroud)

Usm*_*Jdn 17

您总是需要选择涉及关系的外键/主键.在急切的负载中获取product_id也会有效

Product::with('formats:id,upc,product_id')->get();
Run Code Online (Sandbox Code Playgroud)

  • 如果在文档中提到它,则将更有帮助。 (2认同)