У меня есть две модели. Статус и SaleDetails.
Status
------
id
name
slug
Я не определил никаких отношений между Status и SaleDetails.
SaleDetails
-----------
id
id_statuses //connects it to the status table
id_products
price
qty
в модели:
public function status(){
return $this->belongsTo('App\Status', 'id_statuses', 'id');
}
Поэтому я пытаюсь получить все заказы, чей статус соответствует определенному слагу.
Например dd($this->sale_details->where('status.slug', 'pending')
С чем я использую это:
$orders = $this->sale_details->with('product', 'status')->today()->get();
Я должен быть в состоянии отфильтровать их по статусу slugs во внешнем интерфейсе, но я хочу просто сделать это прямо отсюда.
Какой лучший способ пойти по этому поводу?
Вы должны использовать whereHas()
это позволяет вам указать дополнительные фильтры для связанной модели для проверки.
Чтобы применить условие где вы можете использовать whereHas()
лайк,
$status = "pending";
$this->sale_details->whereHas('status', function($q) use ($status){
$q->where('slug', $status);
})->get();
я думаю, лучше, чем использовать построитель запросов если вы хотите быстрый процесс