Php Laravel(OctoberCMS)排序(获取)模型

Php Laravel(OctoberCMS)排序(获取)模型,php,laravel,octobercms,Php,Laravel,Octobercms,我正在尝试按组名(在组件中)对课程进行排序。我使用Ajax通过Post方法获取group_id,并尝试获得类似的经验教训,但返回的数组是空的 Schedule.php: public $belongsTo = [ 'discipline' => 'Titamik\Cio\Models\Discipline', 'auditorium' => 'Titamik\Cio\Models\Auditorium',

我正在尝试按组名(在组件中)对课程进行排序。我使用Ajax通过Post方法获取group_id,并尝试获得类似的经验教训,但返回的数组是空的

Schedule.php:

        public $belongsTo = [
            'discipline' => 'Titamik\Cio\Models\Discipline',
            'auditorium' => 'Titamik\Cio\Models\Auditorium',
            'professors' => 'Titamik\Cio\Models\Professor',
            'groups'     => 'Titamik\Cio\Models\Group',
        ];
Group.php:

        public $hasMany = [
                'direction' => 'Titamik\Cio\Models\Direction',
                'schedule' => 'Titamik\Cio\Models\Schedule'
        ];
ScheduleComponent.php:

        public function onSort() {
            $groupId = post('groupid');
            $this->page['schedule'] = Schedule::groups()->where('id', $groupId)->get();
            return $this->page['schedule'];
        }

这应该能解决你的问题

另一个旁注。如果要通过ajax进行排序,则不需要页面变量;如果没有页面加载,它将不会更新。在这种情况下,只需返回明细表中的值即可。我也会考虑你的要求

public function onSort() {
    $groupId = post('groupid');
    $schedules = Schedule::whereHas('groups', function ($query) use ($groupId) {
        $query->where('id', $groupId);
    })->get();
    return $schedules;
}

由于需要进行大量排序,我决定不必每次都对数据库进行查询,而是对启动组件时得到的数组进行排序。在这方面,有三个问题:1。这是正确的决定吗?2.如何获取与课程
$this->page['schedule'][1]->groups[0]
3关联的组的id。如果我使用更新参数``update:{'schedulecomponent::schedule table':'.'#schedule table container'},``@Titamik,而不是page变量,那么为什么通过return使用数组更合理呢?您从来没有解释过您正在更新一个分部文件。为你的第二个和第三个问题提出一个新问题。您的第一个问题是意见,如果您严格要求性能,请选择更好的服务器。Laravel在查询数据库方面非常高效。我没有遇到过很多过滤器的性能问题。
public function onSort() {
    $groupId = post('groupid');
    $schedules = Schedule::whereHas('groups', function ($query) use ($groupId) {
        $query->where('id', $groupId);
    })->get();
    return $schedules;
}