Laravel Pgination не работает при размещении ссылки после foreach - PullRequest
0 голосов
/ 31 декабря 2018

Я использую laravel 5.2, и у меня возникла проблема со ссылкой на страницы.Когда я добавляю этот код:

{{ $wachat->links() }}

После foreach я получаю эту ошибку:

Call to undefined method Illuminate\Database\Query\Builder::links() (View: /Applications/MAMP/htdocs/kc/kyo-webservice/resources/views/wechat/show.blade.php)

В моем контроллере я использую этот код:

public function wechatshows($d1, $id, $name, Request $request)
{
    $users = Keyuser::where('imception_id', '=', $d1)->first();
    $user = UserKey::where('id', '=', $id)->first();
    if ($name == "all") {
        $wachat = Wechat::where('key', '=', $d1)->orderBy('id', 'DESC')->paginate(5);
    } else {
        $wachat = Wechat::where('key', '=', $d1)->where('groupName', '=', $name)->orderBy('id', 'DESC')->paginate(5);
    }

    $wechatcontact = Wechat::select('groupName')->groupBy('groupName')->get();
    return view('wechat.show', ['wachat' => $wachat, 'user' => $user, 'product' => $d1, 'users' => $users, 'keyUser' => $d1, 'wechatcontact' => $wechatcontact]);
}

Я использую этот код в своих представлениях:

            <tbody id="chatListBody" style="overflow-y: scroll;">
                    @foreach ($wachat as $wachat)
                    <tr>
                    <input type="hidden" class="wechatname" data-id="{{ $wachat->id }}">
                        <td>{{ $wachat->id }}</td>
                        <td>{{ $wachat->wxid }}</td>
                        <td>{{ $wachat->username }}</td>
                        @if ($wachat->type === 'image')
                        <td><a class="example-image-link" href="{{ url('/images/'.$wachat->imgPath.'') }}" data-lightbox="{{$wachat->imgPath}}"
                                data-title="{{$wachat->imgPath}}"><img class="imgwhatsapp" data-lightbox="roadtrip" src="{{ url('/images/'.$wachat->imgPath.'') }}"></a></td>
                        @elseif ($wachat->type === 'video')
                        <td><a href="{{ url('/images/'.$wachat->imgPath.'') }}">{{$wachat->imgPath}}</a></td>
                        @elseif ($wachat->type === 'audio')
                        <td> <a href="{{ url('/images/'.$wachat->imgPath.'') }}">{{$wachat->imgPath}}</a> </td>
                        @elseif ($wachat->type === 'text')
                        <td>{{$wachat->message}}</td>
                        @else
                        <td>no data</td>
                        @endif
                        <td>{{ $wachat->created_at }}</td>
                    </tr>
                    @endforeach
                </tbody>
                {{ $wachat->links() }}
            </div>
        </table>

Когда я помещаю {{$ wachat-> links ()}} выше, потому что он работает, я не знаю, почему это происходит.

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Когда вы перебираете свою коллекцию, Ваша коллекция становится объектом.После цикла, когда вы делаете {{$ wachat-> links ()}}.Ваш код пытается разбить объект на части и показать ошибку.Чтобы избежать подобных проблем, попробуйте использовать имя переменной вашей коллекции во множественном числе и имя объекта в единственном числе.

public function wechatshows($d1, $id, $name, Request $request)
{
    $users = Keyuser::where('imception_id', '=', $d1)->first();
    $user = UserKey::where('id', '=', $id)->first();
    if ($name == "all") {
        $wachats = Wechat::where('key', '=', $d1)->orderBy('id', 'DESC')->paginate(5);
    } else {
        $wachats = Wechat::where('key', '=', $d1)->where('groupName', '=', $name)->orderBy('id', 'DESC')->paginate(5);
    }

    $wechatcontact = Wechat::select('groupName')->groupBy('groupName')->get();
    return view('wechat.show', ['wachats' => $wachats, 'user' => $user, 'product' => $d1, 'users' => $users, 'keyUser' => $d1, 'wechatcontact' => $wechatcontact]);
}

и

 <tbody id="chatListBody" style="overflow-y: scroll;">
                    @foreach ($wachats as $wachat)
                    <tr>
                    <input type="hidden" class="wechatname" data-id="{{ $wachat->id }}">
                        <td>{{ $wachat->id }}</td>
                        <td>{{ $wachat->wxid }}</td>
                        <td>{{ $wachat->username }}</td>
                        @if ($wachat->type === 'image')
                        <td><a class="example-image-link" href="{{ url('/images/'.$wachat->imgPath.'') }}" data-lightbox="{{$wachat->imgPath}}"
                                data-title="{{$wachat->imgPath}}"><img class="imgwhatsapp" data-lightbox="roadtrip" src="{{ url('/images/'.$wachat->imgPath.'') }}"></a></td>
                        @elseif ($wachat->type === 'video')
                        <td><a href="{{ url('/images/'.$wachat->imgPath.'') }}">{{$wachat->imgPath}}</a></td>
                        @elseif ($wachat->type === 'audio')
                        <td> <a href="{{ url('/images/'.$wachat->imgPath.'') }}">{{$wachat->imgPath}}</a> </td>
                        @elseif ($wachat->type === 'text')
                        <td>{{$wachat->message}}</td>
                        @else
                        <td>no data</td>
                        @endif
                        <td>{{ $wachat->created_at }}</td>
                    </tr>
                    @endforeach
                </tbody>
                {{ $wachats->links() }}
            </div>
        </table>
0 голосов
/ 31 декабря 2018

Возможно, $wachat переопределяется внутри @foreach($wachat as $wachat).Таким образом, он не может найти links() метод.

вы должны использовать @foreach($wachat as $singleWachat) или по вашему усмотрению.

...