0

我有一个Order与 和 具有多态客户关系Parent的模型School。我现在的目标是查询订单并生成包含客户name和的报告emailname和字段都email存在于Parent和中School

Order有:

public function customer()
{
    return $this->morphTo();
}

Parent两者School都有:

public function orders()
{
    return $this->morphMany(Order::class, 'customer');
}

我目前的查询是:

$result = Order::query()
        ->with('customer')
        ->select(
             'orders.id',
             'amount'
          )->get();

dd($result->first()->toArray());

结果是:

array:6 [▼
  "id" => 1
  "amount" => "42.00"
  "customer" => null
]

我认为可以在选定字段列表中添加customer.namecustomer.email,但 Eloquent 抱怨customer.name找不到客户字段,这有意义吗?

如何获取相关模型中的数据?

4

1 回答 1

1

对于 Laravel 8,您可以在此处查看链接。

然后,您的代码将是:

$result = Order::whereHasMorph(
    'orderable', // this is your polymorphic relationship you define
    [Parent::class, School::class], // your list of Models you want to query from the polymorphic relationship
    function (Builder $query) {
        $query->select('name', 'email');
    }
)->get();

那应该这样做。

于 2021-10-14T01:52:51.303 回答