model laravel menghalang pemuatan malas daripada membuang pengecualian apabila menggunakan hubungan "whenLoaded()" dalam sumber
P粉614840363
P粉614840363 2024-01-05 21:36:19
0
1
527

Saya baru-baru ini mula menggunakan Model::preventLazyLoading() Tetapi walaupun hubungan itu tidak memuat tetapi kadang-kadang ia mungkin, ia sebenarnya menimbulkan ralat

Suka sumber 'discount' => $this->whenLoaded('meta', $this->meta->discount ?? 0),

versi laravel: 9.17.0

P粉614840363
P粉614840363

membalas semua(1)
P粉920835423

Biar PHP 在此处解析您的语法。无论如何,它都必须加载 $this->meta,因为当 PHP 解析您的代码时,它优先于 whenLoaded() kaedah.

$this->whenLoaded('meta', $this->meta->discount ?? 0)

Sebab itu whenLoaded() 可以采用 closure() 来避免加载关系,除非它们实际上已加载。此方法将在满足 whenLoaded() penutupan dinilai dahulu selepas syarat.

$this->whenLoaded('meta', function () { return $this->meta->discount ?? 0; });
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan