【问题标题】:Display alphabetically [duplicate]按字母顺序显示[重复]
【发布时间】:2019-12-16 23:41:56
【问题描述】:

在我的模型反馈中,我必须按字母顺序检索学生的姓名。

你知道我必须在我的代码中包含这行的什么地方吗? orderBy('name', 'ASC')

我有好几次合成器问题...

public function index(Request $req) 
    {

    if ($req->search == "") {
        $feedbacks = Feedback::paginate(5);
        return view('admin.feedbacks.index', compact('feedbacks'));

    } else {

        $validated = $req->validate([
            'search' => 'alpha', 
        ]);

        $feedbacks = Feedback::whereHas('students', function($query) use($req) {
            $query->where('name', 'like', '%' . $req->search . '%');
        })->paginate(5);

        return view('admin.feedbacks.index', compact('feedbacks'));
        }

    }

【问题讨论】:

  • 你试过Feedback::orderBy('name', 'ASC')->...吗?

标签: laravel laravel-5


【解决方案1】:

我假设您在反馈和学生之间有 belongsTo 关系。并且您希望反馈按学生姓名排序。一个可能的解决方案是连接两个表。

public function index(Request $req) 
    {

    if ($req->search == "") {
        $feedbacks = Feedback::join('students', 'feedbacks.student_id', '=', 'students.id')->orderBy('students.name', 'asc')->select('feedbacks.*')->paginate(5);
        return view('admin.feedbacks.index', compact('feedbacks'));

    } else {

        $validated = $req->validate([
            'search' => 'alpha', 
        ]);

        $feedbacks = Feedback::join('students', 'feedbacks.student_id', '=', 'students.id')->where('students.name','like', '%' . $req->search . '%')->orderBy('students.name', 'asc')->select('feedbacks.*')->paginate(5);

        return view('admin.feedbacks.index', compact('feedbacks'));
        }

    }

【讨论】:

  • 非常感谢您^^
【解决方案2】:

您需要对代码进行一些重构。当您只返回一个反馈对象时,拥有两个反馈对象是没有用的。您需要考虑的另一件事是 $validaded 变量,因为您根本不会在您拥有的代码中使用它。

我会选择这样的东西,但当然还有改进的空间:

public function index(Request $req) 
{
    $feedbacks = (new Feedback());
    $feedbacks->orderBy('name', 'ASC');
    if ($req->search == "") {
        $feedbacks->paginate(5);
        return view('admin.feedbacks.index', compact('feedbacks'));

    } else {

        $validated = $req->validate([
            'search' => 'alpha', 
        ]);

        $feedbacks->whereHas('students', function($query) use($req) {
            $query->where('name', 'like', '%' . $req->search . '%');
        })->paginate(5);

        return view('admin.feedbacks.index', compact('feedbacks'));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 2014-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多