У меня есть филиал, филиал_продукты и счета-фактуры и модели invoice_products.
В филиале много веток_продуктов,
филиал имеет много счетов,
накладные имеют много invoice_products
branch_products имеет много invoice_products
Теперь вернемся к вопросу,
При создании нового продукта счета-фактуры я хочу, чтобы в поле BelongsTo отображались только те продукты филиала, которые находятся в ветви счета-фактуры.
// InvoiceProduct.php
public function invoice() {
return $this->belongsTo('App\Models\Invoice');
}
public function branchProduct() {
return $this->belongsTo('App\Models\BranchProduct');
}
// I need something like this
public function getAvailableBranchProducts() {
// get the branch id of the invoice, doesn't work
$branchId = $this->invoice->branch_id;
// get branch products that has the given branch id, doesn't work
return whereHas('branch_products', function ($query) use ($branchId) {
$query->where('branch_id', $branchId);
})->get();
}
Я не знаю, как бы я решил это. Я пробовал WhereHas, местные возможности, но не повезло.
Мне это нужно для Laravel Nova.
Возможно, вы уже решили эту проблему, но есть пакет, который добавляет поле Nova, которое может помочь вам (или другим пользователям, попадающим на эту страницу).
https://packagist.org/packages/orlyapps/nova-belongsto-depend
Довольно прост в установке и использовании. Вы можете использовать это или получить некоторые идеи из этого.
Других решений пока нет …