【问题标题】:Method Illuminate\Database\Eloquent\Collection::appends does not exist. I used kyslik/column-sortable package, sort and pagination are not working方法 Illuminate\Database\Eloquent\Collection::appends 不存在。我使用了 kyslik/column-sortable 包,排序和分页不起作用
【发布时间】:2020-04-20 19:54:37
【问题描述】:

学生模型

class Student extends Model
{
    use Sortable;

    protected $fillable = ['firstName', 'lastName', 'date', 'score', 'batch_id', 'subject_id', 'mark_id'];

    public $sortable = [
        'id', 'firstName', 'lastName', 'date', 'score', 'batch_id', 'subject_id', 'mark_id', 'created_at'
    ];

    public function batch()
    {
        return $this->belongsTo('\App\Batch', 'batch_id');
    }

    public function subject()
    {
        return $this->belongsTo('\App\Subject', 'subject_id');
    }

    public function mark()
    {
        return $this->belongsTo('\App\Mark', 'mark_id');
    }

    public function role()
    {
        return $this->belongsTo('\App\Role', 'role_id');
    }
}

路线

Route::get('/studentrecord', 'StudentController@sort');

控制器

public function sort()
{
    $sort = Student::sortable()->paginate(5);

    return view('/studentrecord', compact('sort'));
}

studentrecord.blade

<table class="table table-striped">
    <thead>
    <tr class="thead">
        <th>@sortablelink('Exam Date')</th>
        <th>@sortablelink('Student ID Number')</th>
        <th>@sortablelink('Student Name')</th>
        <th>@sortablelink('Batch')</th>
        <th>@sortablelink('Subject')</th>
        <th>@sortablelink('Results')</th>
        <th>@sortablelink('Marks')</th>
        <th>@sortablelink('Updated')</th>
        <th>Action</th>
    </tr>
    </thead>
    <tbody>
    @if($students->count())
        @foreach($students as $student)
            <tr class="tbody">
                <td>{{$student->date}}</td>
                <td>0001-00{{$student->id}}</td>
                <td>{{$student->firstName.' '.$student->lastName}}</td>
                <td>{{$student->batch->name}}</td>
                <td>{{$student->subject->name}}</td>
                <td>{{$student->score}}</td>
                <td>{{$student->mark->name}}</td>
                <td>{{$student->created_at->diffForHumans()}}</td>
                <td>
                <!-- <a href="/studentrecord/{{$student->id}}" class="btn btn-secondary form-control">View</a> -->
                    @auth
                        @if(auth()->user()->role_id === 1)
                            <a href="/admin/editstudent/{{$student->id}}" class="btn btn-info form-control"><i
                                        class="fa fa-edit" style="font-size:20px;color:#fff;"></i></a>
                            <form class="delete_form" action="/admin/removestudent/{{$student->id}}" method="POST">
                                @csrf
                                {{method_field("DELETE")}}
                                <button type="submit" class="btn btn-danger form-control">
                                    <i class="fa fa-remove" style="font-size:20px;color:#fff;"></i>
                                </button>
                            </form>
                        @endif
                    @endauth
                </td>
            </tr>
        @endforeach
    @endif
    </tbody>
</table>

<div>
    {!! $students->appends(\Request::except('page'))->render() !!}
</div>

Laravel 通过分页降序或升序排序。 如果我单击排序链接,它不会排序,但在 url 中它会更改为 http://localhost:8000/studentrecord?sort=Batch&direction=asc 和 desc

请帮帮我...提前谢谢你

【问题讨论】:

  • $students 是从哪里来的?
  • 在我的数据库中,我有学生表

标签: laravel


【解决方案1】:

代替:

<th>@sortablelink('Student ID Number')</th>
Use this: <th>@sortablelink('id','Student ID Number')</th>

@sortablelink 的第一个参数应该是您数据库中的列名,第二个参数应该是您希望显示的名称。

对所有表格标题也这样做。

另外,您需要在table tag 末尾添加以下语句:-

</table>
{!! $students->appends(\Request::except('page'))->render() !!}

这里,div 不是必需的。

【讨论】:

    猜你喜欢
    • 2019-11-12
    • 2020-03-22
    • 2015-12-20
    • 2020-11-21
    • 2021-09-08
    • 2020-11-13
    • 2019-12-11
    • 2020-02-04
    • 2019-05-24
    相关资源
    最近更新 更多