@Tikit

Как один ко многим вывести список из БД только под определенным id?

Здравствуйте помогите мне, ломаю головы не знаю как сделать. Надеюсь смогу объяснить, подробно покажу код. У меня есть соотношение двух таблиц один ко многим. Мне нужно вывести список только с тем Id, на странице которой я нахожусь. Например вот647ce485980ec552591083.png
Пример кода:
api
Route::get('/pov/', [PoverkaSpisokController::class, '__invoke']);


app
path: '/oborudovanies/:id/edit/poverka/spisok', component: ()=> import('./components/glavnoe_menu/ispytatelnaya_laboratoriya/oborudovanie/EditPoverkaSpisokComponent.vue'),
        name: 'oborudovanies.edit.poverka.spisok'


Контроллер
class PoverkaSpisokController extends Controller
{
    public function __invoke()
    {
        $poverka = Poverka::latest()->paginate(15);// Модель "Oborudovanie", "$oborudovanie"- произвольное название должно совпадать, с "return $oborudovanie"
        return PoverkaResource::collection($poverka);
    }
}


Модель
class Poverka extends Model
{
    use HasFactory;
    protected $guarded = false;
    protected $table = 'poverkas';// Таблица из базы данных, с которой мы работаем
}


Ресурс
class PoverkaResource extends JsonResource
{

    public function toArray(Request $request): array
    {
        return [
            'id' => $this -> id,
            'organ' => $this -> organ,
            'cena' => $this -> cena,
            'svidetelctvo' => $this -> svidetelctvo,
            'poverka_ot' => $this -> poverka_ot,
            'poverka_do' => $this -> poverka_do,
            'primechanie' => $this -> primechanie,
            'oborudovanie_id' => $this -> oborudovanie_id,
        ];
    }
}
  • Вопрос задан
  • 123 просмотра
Решения вопроса 1
@iljaGolubev
если я правильно понял, vue приложение делает запрос к api чтобы получить данные для страницы /oborudovanies/:id/edit/poverka/spisok.

Тогда добейтесь сначала, чтобы api возвращала то, что вам нужно (без vue).
Код нужно изменить примерно так:
// route
Route::get('/pov/{oborudovanieId}', [PoverkaSpisokController::class, '__invoke']);

// controller
 public function __invoke(int $oborudovanieId )
    {
        $poverka =Poverka::whereHas('oborudovanie', function($q) use ($oborudovanieId){
                $q->where('id', $oborudovanieId);
            })
//            ->with('proverkas') // если ещё нет на странице
            ->latest()
            ->paginate(15);
...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы