在 Laravel 8 - Eloquent 上将关系与集合分开

Separate a relationship from the collection on Laravel 8 - Eloquent

我正在生成一个收集发票和相关发票客户的查询。

$invoice = Invoice::with(['lines', 'fullClient'])->findOrFail($idInvoice);     
return view('invoiceView', ['invoice'=>$invoice]);

它工作正常,通过$invoice->clients,我可以访问客户端。 但我希望能够将客户与收款发票分开。通过另一个变量发送它。所以它看起来像这样:

$invoice = Invoice::with(['lines', 'fullClient'])->findOrFail($idInvoice); 
//Some magic here
return view('invoiceView', ['invoice'=>$invoice,'client'=>$client]);

这是为了利用发票创建视图(以便能够编辑),这是 $clients 集合所期望的。
我已经搜索过,在视图中执行此操作,但不可能或不建议这样做。

我想我可以在发送给查看之前做这样的事情:

$client = $invoice->customer

但是我会发送两次以供查看。

你可以使用 pluck()

$invoice = Invoice::with(['lines', 'fullClient'])->findOrFail($idInvoice); 
//The magic
$client = $invoice->pluck('fullClient');
return view('invoiceView', ['invoice'=>$invoice,'client'=>$client]);

docs

要取消与模型的关系,您可以使用 unsetRelation($relation) 方法

$invoice = Invoice::with(['lines', 'fullClient'])->findOrFail($idInvoice); 
$client = $invoice->fullClient;

$invoice->unsetRelation('fullClient');

return view('invoiceView', ['invoice'=>$invoice,'client'=>$client]);