Stack Overflow на русском Asked by Andrey on December 1, 2020
Всем привет. Допустим есть 2 таблицы – clients и payments.
У клиента может быть много платежей, потому тут в моделях у нас связь hasMany.
А как сделать так, чтобы по id клиента указанного в url (допустим url такой /get/client/{client}/payments, тут id клиента помещается в {client}) можно было получить все платежи конкретного клиента (ясно дело id характеризует конкретного клиента).
Прошу пожалуйста подсказать кто знает как это реализовать.
В целом вы же получаете клиента можете работать с платежами напрямую из метода например
public function payments(AppModelsClient $client)
{
return response()->json(['success' => true, 'payload' => ['payments' => $client->payments]]);
}
Но это если у вас подобная связь
clients:
payments
и соответственно в моделях
// AppModelsClient
public function payments(): HasMany
{
return $this->hasMany(Payments::class);
}
// AppModelsPayment
public function client(): BelongsTo
{
return $this->belongsTo(Client::class);
}
То собственно у вас уже есть все связи между платежами и клиентами то есть вы можете вытаскивать как платежи выбранного клиента так и клиента у конкретного платежа... Но ещё вы можете сделать скопу
// AppModelsPayment
public function scopeByClientId(IlluminateDatabaseEloquentBuilder $builder, int $client_id): IlluminateDatabaseEloquentBuilder
{
return $builder->where('client_id', $client_id);
}
И теперь что бы получить платежи по id клиента достаточно попросить их Payment::byClientId($client_id)->get()
Correct answer by Walfter on December 1, 2020
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP