ссылки на метод не существует - laravel 5.4 - PullRequest
0 голосов
/ 04 июля 2018

Я использую фильтр по серийному номеру в таблице ,, но когда я нажимаю кнопку, ошибка как это

"ссылки на метод не существует"

это мой контроллер

 public function show(Request $request)
{

    $instrument = Instrument::when($request->serial_number, function ($query) use ($request) {
        $query->where('serial_number', 'like', "%{$request->serial_number}%");
    })->paginate(5);
    $instrument->appends($request->only('serial_number'));
    return view('settinginstrument.index', compact('settinginstrument'));
}

это мой клинок:

 <table class="table">
    @foreach ($instruments as $instrument)
      <tr>
        <td>
          Serial Number : {{ $instrument->serial_number }}
          @if($instrument->customer !== NULL)
          <div class="text-muted"><i class="fa fa-hospital-o" aria-hidden="true"></i>  {{ $instrument->customer->name }}</div>
          @endif
          @if($instrument->contractType !== NULL)
          <div class="text-muted"><i class="fa fa-compress" aria-hidden="true"></i>  {{ $instrument->contractType->name }}</div>
          @endif
        </td>
        <td>
          <div class="pull-right">
            <a type="button" href="{{ route('instrument.edit', ['instrumentType' => $instrumentType->id, 'instrument' => $instrument->id]) }}"
              class="btn btn-success ">
              <i class="fa fa-pencil"></i> Edit
            </a>
              @if($instrument->customer == NULL || $instrument->contractType == NULL)
              <a href="{{ route('instrument.destroy', ['instrumentType' => $instrumentType->id, 'instrument' => $instrument->id]) }}"
                data-method="delete" data-confirm="" class="btn btn-danger">
                <i class="fa fa-trash"></i> <span class="hidden-xs">Delete</span>
              </a>
              @endif

          </div>
        </td>
      </tr>
    @endforeach
  </table>
  <div class="paginator text-center">{{ $instruments->links() }}</div>
  @else
....................................

где не так с моим кодом?

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Вы не передаете параметр для просмотра:

public function show(Request $request)
{

    $instruments = Instrument::when($request->serial_number, function ($query) use ($request) {
        $query->where('serial_number', 'like', "%{$request->serial_number}%");
    })->paginate(5);
    $instrument->appends($request->only('serial_number'));
    return view('settinginstrument.index',['instruments' => $instruments);
}

Тогда на клинке:

{{$instruments->links()}}
0 голосов
/ 04 июля 2018

Когда у вас нулевое количество записей и вы пытаетесь получить доступ к ссылкам (), возникает такая проблема Добавьте условие, чтобы проверить, существует ли запись.

@if($instruments)
<div class="paginator text-center">{{ $instruments->links() }}</div>
@endif

Также в контроллере есть одна ошибка опечатки $instruments и $instrument Я рекомендую добавить условие выше foreach и в пустом результате показать какое-то сообщение, что запись не найдена .

Обновление Также передайте $instruments на балде

$instruments = Instrument::when($request->serial_number, function ($query) use ($request) {
    $query->where('serial_number', 'like', "%{$request->serial_number}%");
})->paginate(5);
$instruments->appends($request->only('serial_number'));
return view('settinginstrument.index', compact('instruments'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...